首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >删除JavaScript中的数组元素- delete vs splice

删除JavaScript中的数组元素- delete vs splice
EN

Stack Overflow用户
提问于 2009-02-01 11:11:16
回答 14查看 1.5M关注 0票数 1.4K

与使用the Array.splice method相比,在数组元素上使用the delete operator有什么区别?

例如:

代码语言:javascript
复制
myArray = ['a', 'b', 'c', 'd'];

delete myArray[1];
//  or
myArray.splice (1, 1);

如果我可以像删除对象一样删除数组元素,为什么还要使用splice方法呢?

EN

回答 14

Stack Overflow用户

发布于 2009-02-01 11:13:43

因为delete只从数组中的元素中删除对象,所以数组的长度不会改变。Splice删除对象并缩短数组。

下面的代码将显示"a“、"b”、"undefined“、"d”

代码语言:javascript
复制
myArray = ['a', 'b', 'c', 'd']; delete myArray[2];

for (var count = 0; count < myArray.length; count++) {
    alert(myArray[count]);
}

而这将显示"a“、"b”、"d“

代码语言:javascript
复制
myArray = ['a', 'b', 'c', 'd']; myArray.splice(2,1);

for (var count = 0; count < myArray.length; count++) {
    alert(myArray[count]);
}
票数 105
EN

Stack Overflow用户

发布于 2012-05-09 21:25:30

当我试图理解如何从数组中删除元素的每个匹配项时,我偶然发现了这个问题。splicedeleteHere's a comparison,用于从items阵列中删除每个'c'

代码语言:javascript
复制
var items = ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'];

while (items.indexOf('c') !== -1) {
  items.splice(items.indexOf('c'), 1);
}

console.log(items); // ["a", "b", "d", "a", "b", "d"]

items = ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'];

while (items.indexOf('c') !== -1) {
  delete items[items.indexOf('c')];
}

console.log(items); // ["a", "b", undefined, "d", "a", "b", undefined, "d"]
​
票数 75
EN

Stack Overflow用户

发布于 2010-01-11 15:52:08

splice将使用数字索引。

delete可以用于其他类型的索引。

示例:

代码语言:javascript
复制
delete myArray['text1'];
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/500606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档