我有以下数组。
var arr = [1,0,2];
我想删除最后一个元素,即 2。
我使用过,arr.slice(-1);
但它不会删除该值。
我有以下数组。
var arr = [1,0,2];
我想删除最后一个元素,即 2。
我使用过,arr.slice(-1);
但它不会删除该值。
Array.prototype.pop() 按照JavaScript 约定。
let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();
console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]
您可以使用以下.slice()
方法执行此操作:
arr.slice(0, -1); // returns [1,0]
这是一个演示:
var arr = [1, 0, 2];
var newArr = arr.slice(0, -1); // returns [1,0]
console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array : </b>
<div id="div1"></div>
<br/>
<b>After slice(0, -1): </b>
<div id="div2"></div>
而不是做:
arr.slice(-1); // returns [2]
这是一个演示:
var arr = [1, 0, 2];
var newArr = arr.slice(-1); // returns [2]
console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array : </b>
<div id="div1"></div>
<br/>
<b>After slice(-1): </b>
<div id="div2"></div>
现在Array.prototype.slice()
或简而言之slice()
方法的基本语法是:
arr.slice([begin[, end]])
这里,
该begin
参数是从零开始从数组中提取的索引。所以,让我们根据上面的例子说,如果我们做类似的事情
arr.slice(0) // returns [1,0,2]
它将从位置 0 的序列开始返回所有数组元素,即[1,0,2]
. 类似地,如果我们这样做
arr.slice(1) // returns [0,2]
它会返回,[0,2]
因为 0 位于此处的位置 1 以及之后的所有位置。现在,在您的情况下,您传递了一个负索引,即-1
作为开始参数,它表示距序列末尾的偏移量。因此,slice(-1)
在您的情况下,提取序列中的最后一个数组元素,即2
(正如我们在上面的演示中已经看到的那样)。
现在,让我们end
在slice()
这里谈谈方法语法中的参数。它又是一个从零开始的索引,在该索引处从数组中提取结束。所以,假设我们有一个数组,如:-
var arr = [1, 0, 2, 5, 3, 9];
我们只想获取2,5,3
数组中的元素。现在,2
从序列开始的位置是2
,对于最后一个元素,3
它是4
。我们需要在位置 5 处结束提取,因为我们需要在该位置之前获取元素。所以,我们将slice()
在这里简单地实现方法,如
arr.slice(2, 5) // returns [2,5,3]
在你的情况下,我们已经实现-1
为结束参数,所以我们的代码就像
arr.slice(0, -1) // returns [1,0]
作为负索引,end
表示距序列末尾的偏移量。因此,slice(0,-1)
通过序列中的倒数第二个元素提取第一个元素。所以,我们得到了想要的输出。我们也可以像
arr.slice(0, 2) // returns [1,0]
我们将得到相同的输出。但是,我在-1
这里使用它是因为即使对于像这样的长数组也更容易实现
[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]
如果你只想删除最后一个元素,你不想坐在这里计算最后 9 的位置,然后做 like arr.slice(0, 22)
。然后你可以在这里简单地实现负索引逻辑并做
arr.slice(0, -1) // same result as arr.slice(0, 22)
希望能帮助到你!
通过例子学习:
let array_1 = [1,2,3,4];
let array_2 = [1,2,3,4];
let array_3 = [1,2,3,4];
let array_4 = [1,2,3,4];
array_1.splice(-1,1) // returned --> [4] array_1 = [1,2,3]
array_2.slice(0,-1); // returned --> [1,2,3] array_2 = [1,2,3,4]
array_3.pop(); // returned --> 4 array_3 = [1,2,3]
array_4.shift(); // returned --> 1 array_4 = [2,3,4]
您需要这样做,因为slice
不会改变原始数组。
arr = arr.slice(-1);
如果要更改原始数组,可以使用splice
:
arr.splice(-1, 1);
或pop
:
arr.pop();