我有下面的数组。

var arr = [1,0,2];

我想删除最后一个元素,即2。

我使用了arr。slice(-1);但它并没有删除值。


当前回答

var stack = [1,2,3,4,5,6];

stack.reverse().shift();

stack.push(0);

输出为:Array[0,1,2,3,4,5]。 这将允许您在插入新值时保持相同数量的数组元素。

其他回答

你可以简单地使用arr.pop()

这将删除数组的最后一个条目。

var arr = [1,0,2]; 
var popped = arr.pop();//Now arr = [1,0] & popped = 2

使用Lodash,你可以使用dropRight,如果你不关心哪些元素被删除了:

_.dropRight([1, 2, 3])
// => [1, 2]

_.dropRight([1, 2, 3], 2);
// => [1]

splice(index,howmany) -这个解决方案听起来不错。但是This howmany只适用于正数组下标。若要删除最后两项或三项,请使用索引本身。

例如,使用splice(-2)删除最后两项。拼接(-3)用于移除最后三个项目。

使用JavaScript约定的Array.prototype.pop()。

let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();

console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]

值得注意的是,slice都将返回一个新数组,而.pop()和.splice()将改变现有数组。

如果您喜欢使用链式命令样式处理数据集合,那么您将非常希望在此类情况下使用slice。

例如:

myArray = [1,2,3,4,5,6,7,8,9,10]; var newArrayOfThings = myArray .filter(x => x > 5) //只有大的东西 .slice(0, -1) //删除最后一项!Slice(-1)将给出第一个元素 .map(x => '数字是:${x} ')

它可能需要更多的混乱和变量管理,用“pop”做同样的事情,因为不像map, filter等,你不会得到一个新的数组。

push也是一样,它将一个元素添加到数组的末尾。你最好使用concat,因为它可以让你保持流动。

myArray = [1,2,3,4,5,6,7,8,9,10]; var newArrayOfThings = myArray .filter(x => x > 5) //只有大的东西 .slice(-1) //去掉"10" .concat([100]) //使用concat时,必须传递一个数组 .map(x => ' number is: ${x} ') //映射到一组字符串