我有下面的数组。
var arr = [1,0,2];
我想删除最后一个元素,即2。
我使用了arr。slice(-1);但它并没有删除值。
我有下面的数组。
var arr = [1,0,2];
我想删除最后一个元素,即2。
我使用了arr。slice(-1);但它并没有删除值。
当前回答
使用Lodash,你可以使用dropRight,如果你不关心哪些元素被删除了:
_.dropRight([1, 2, 3])
// => [1, 2]
_.dropRight([1, 2, 3], 2);
// => [1]
其他回答
我得到了最好的答案!
var array = [1, 2, 3, 4]
array.length = array.length - 1
console.log(array)
> [1, 2, 3]
老实说,JS在这一点上是一个迷因。
PS:这会影响变量和它的任何引用,如果你不想影响变量的任何引用,你可以这样做:
var array = [1, 2, 3, 4]
var modifiedArray = Array.from(array)
modifiedArray .length = modifiedArray .length - 1
console.log(modifiedArray )
> [1, 2, 3]
你可以使用.slice()方法这样做:
arr.slice(0, -1); // returns [1,0]
下面是一个演示:
Var arr = [1,0,2]; var newArr = arr。片(0,1);//返回[1,0] console.log (newArr); $ (" # div1”)。Text ('[' + arr + ']'); $ (" # div2”)。text('[' + newArr + ']'); < script src = " http://code.jquery.com/jquery.min.js " > < /脚本> <b>原始阵列:</b> . < div id = " div1 " > < / div > < br / > <b>切片后(0,-1):</b> < div id = " div2 " > < / div >
而不是做:
arr.slice(-1); // returns [2]
下面是一个演示:
Var arr = [1,0,2]; var newArr = arr.slice(-1);//返回[2] console.log (newArr); $ (" # div1”)。Text ('[' + arr + ']'); $ (" # div2”)。text('[' + newArr + ']'); < script src = " http://code.jquery.com/jquery.min.js " > < /脚本> <b>原始阵列:</b> . < div id = " div1 " > < / div > < br / > <b>切片后(-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(正如我们在上面的演示中已经看到的那样)。
现在,让我们讨论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)从序列中倒数第二个元素提取第一个元素。所以,我们得到了想要的输出。我们也可以做like
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的位置,就像arr一样。片(0,22)。然后,您可以在这里简单地实现负索引逻辑& do
arr.slice(0, -1) // same result as arr.slice(0, 22)
var a = [1,2,3,4,5,6];
console.log(a.reverse().slice(1).reverse());
//Array(5) [ 1, 2, 3, 4, 5 ]
使用展开运算符:
Const a = [1,2,3] Const[,…]Rest] = a.reverse(); const withoutLast = rest.reverse(); console.log (withoutLast)
var stack = [1,2,3,4,5,6];
stack.reverse().shift();
stack.push(0);
输出为:Array[0,1,2,3,4,5]。 这将允许您在插入新值时保持相同数量的数组元素。