与使用the Array.splice
method相比,在数组元素上使用the delete
operator有什么区别?
例如:
myArray = ['a', 'b', 'c', 'd'];
delete myArray[1];
// or
myArray.splice (1, 1);
如果我可以像删除对象一样删除数组元素,为什么还要使用splice方法呢?
发布于 2009-02-01 11:13:43
因为delete只从数组中的元素中删除对象,所以数组的长度不会改变。Splice删除对象并缩短数组。
下面的代码将显示"a“、"b”、"undefined“、"d”
myArray = ['a', 'b', 'c', 'd']; delete myArray[2];
for (var count = 0; count < myArray.length; count++) {
alert(myArray[count]);
}
而这将显示"a“、"b”、"d“
myArray = ['a', 'b', 'c', 'd']; myArray.splice(2,1);
for (var count = 0; count < myArray.length; count++) {
alert(myArray[count]);
}
发布于 2012-05-09 21:25:30
当我试图理解如何从数组中删除元素的每个匹配项时,我偶然发现了这个问题。splice
和delete
的Here's a comparison,用于从items
阵列中删除每个'c'
。
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"]
发布于 2010-01-11 15:52:08
splice
将使用数字索引。
而delete
可以用于其他类型的索引。
示例:
delete myArray['text1'];
https://stackoverflow.com/questions/500606
复制相似问题