JavaScript的splice如何删除最后一个元素?

4
var arr = [1, 2, 3, 4, 5]
console.log(arr)
//[1, 2, 3, 4, 5]
arr = arr.splice(4, 1)
console.log(arr)
//[5]

我想删除最后一个元素,但为什么它会删除除最后一个元素外的所有元素?
11个回答

4

你需要省略这个赋值操作。

var arr = [1, 2, 3, 4, 5]
console.log(...arr); // [1, 2, 3, 4, 5]

arr.splice(4, 1);
console.log(...arr); // [1, 2, 3, 4]

如果您只想删除最后一个元素,可以使用负索引结合 Array#splice。对于从末尾开始的其他索引也适用。

var arr = [1, 2, 3, 4, 5]
console.log(...arr); // [1, 2, 3, 4, 5]

arr.splice(-1, 1);
console.log(...arr); // [1, 2, 3, 4]


3

Array#splice 方法会直接修改原数组,并返回被移除的部分。请不要将被移除的部分重新赋值给变量。

var arr = [1, 2, 3, 4, 5]
arr.splice(4, 1)
console.log(arr);


3

splice 函数会修改数组并返回一个包含所移除元素的新数组。

顺便提一下,你可以使用更适合此操作的 pop 函数:

var arr = [1, 2, 3, 4, 5];

arr.pop();

console.log(arr);

pop 用于删除数组的最后一个元素。


1
splice()方法可以向数组中添加/删除项目,并以数组形式返回已删除的项目。
语法: let arrDeletedItems = array.splice(starting_index , 要添加或删除项的索引,item1,item2,item3 ...等)
例如: let arr = [1, 2, 3, 4, 5] arr.splice(4, 1)
在这种情况下,您从索引4开始,也就是值“5”,并且您要删除从索引4开始的第一个元素,即值'5'。因此,splice方法将返回一个新数组(因为它返回已删除元素的新数组),其中仅包含5。
要获取一个包含除最后一个元素5之外的所有元素的数组,应编写: arr = arr.splice(0,4) 这意味着从索引0开始,删除元素直到索引4。

1
splice方法需要两个参数:起始索引(包含)和结束索引(不包含)。下面的代码将会实现你所描述的功能。
``` arr = arr.splice(0, 4) ```

Array.prototype.splice() 可以接受三个或更多参数(如果您使用它来替换项目)。 - Yevhen Horbunkov

1
这是一种更通用的方法:

var arr = [1, 2, 3, 4, 5]
arr.splice(arr.length - 1);

console.log(arr)


1

您可以通过splice(-1)访问最后一个数组元素,然后将该值(5)存储到变量newArr中。原始数组现在的值为[1, 2, 3, 4]。

let arr = [1, 2, 3, 4, 5];
let newArr = arr.splice(-1);

console.log(arr)    //[1, 2, 3, 4]
console.log(newArr)  //[5]


1
在您的代码中,您正在将arr重新分配为已切割的值,即[5]。您应该这样做:
 var arr = [1, 2, 3, 4, 5]
     console.log(arr)
   //[1, 2, 3, 4, 5]
     arr.splice(4, 1)
     console.log(arr)
   //[1, 2, 3, 4]

这应该能给你想要的结果;

0

你也可以使用剩余运算符从数组中删除最后一个元素

const array = [1, 2, 3, 4, 5]
const [ ...newArray, last ] = array

0

splice方法返回删除的项目,因此正在将返回值分配给原始数组。请改成这样

var arr = [1, 2, 3, 4, 5];
console.log(arr);
//[1, 2, 3, 4, 5]
arr.splice(4, 1);
console.log(arr);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接