如何从 JavaScript 中的数组中删除元素?

IT技术 javascript arrays
2021-01-28 12:36:06
var arr = [1,2,3,5,6];

删除第一个元素

我想删除数组的第一个元素,使其变为:

var arr = [2,3,5,6];

删除第二个元素

为了扩展这个问题,如果我想删除数组的第二个元素,使其变为:

var arr = [1,3,5,6];
6个回答

shift()非常适合您的情况。shift()从数组中删除第一个元素并返回该元素。此方法更改数组的长度。

array = [1, 2, 3, 4, 5];

array.shift(); // 1

array // [2, 3, 4, 5]
@Gabriel:这不正是问题所在吗?我更喜欢shift()splice(..., ...)因为它更明确、更直接。
2021-03-13 12:36:06
虽然代码示例是正确的,但描述具有误导性:(a) 正如@DanH 指出的那样,它是返回的第一个元素,(b)输入数组被修改的事实不清楚。因此,Ped 的回答更胜一筹。
2021-03-15 12:36:06
这有效,但只会删除数组中的第一个元素。
2021-03-28 12:36:06
更正:根据您提供的链接,它返回第一个元素,而不是一个减去第一个元素的新数组:)
2021-04-07 12:36:06
shift除非您拼接大型列表jsperf.com/splice-vs-shift3jsperf.com/splice-vs-shift2,否则速度会更快
2021-04-08 12:36:06

要获得更灵活的解决方案,请使用该splice()函数。它允许您根据索引值删除数组中的任何项目:

var indexToRemove = 0;
var numberToRemove = 1;

arr.splice(indexToRemove, numberToRemove);
如果您从 Google 来到这里:Gabriel 更喜欢这个答案,但您应该知道还有 shift(),请参阅 Joseph 的答案。
2021-03-20 12:36:06
我更喜欢splice()shift()因为它更灵活。我可能想在未来做一些不同的事情,并不总是我只想删除一个元素,甚至第一个元素。
2021-03-26 12:36:06
以及后续问题:arr.splice(1,1)对于第二个元素。
2021-04-05 12:36:06

Array.prototype.shift方法从数组中删除第一个元素,并返回它。它修改原始数组。

var a = [1,2,3]
// [1,2,3]
a.shift()
// 1
a
//[2,3]
Joseph Silvashy 的回答有了很大的改进 - 描述和代码之间没有不一致。
2021-03-31 12:36:06
arr.slice(begin[,end])

是非破坏性的,拼接和移位会修改你的原始数组

是的,非变异。这应该更明显。
2021-03-21 12:36:06

也许是这样的:

arr=arr.slice(1);