在JavaScript中删除数组元素

在数组元素上使用delete操作符与使用Array.splice方法相比有什么Array.splice

例如:

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

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

为什么即使有splice方法,如果我可以用对象删除数组元素?


delete将删除对象属性,但不会重新索引数组或更新其长度。 这使得它看起来好像是未定义的:

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> delete myArray[0]
  true
> myArray[0]
  undefined

请注意,它实际上并未设置为undefined的值,而是将该属性从数组中移除,使其显示为未定义。 Chrome开发工具通过在记录数组时empty清楚地区分这种区别。

> myArray[0]
  undefined
> myArray
  [empty, "b", "c", "d"]

myArray.splice(start, deleteCount)实际上删除了该元素,重新为该数组建立​​索引并更改其长度。

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> myArray.splice(0, 2)
  ["a", "b"]
> myArray
  ["c", "d"]

Array.remove()方法

jQuery创建者John Resig创建了一个非常方便的Array.remove方法,我总是在我的项目中使用它。

// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

这里有一些如何使用它的例子:

// Remove the second item from the array
array.remove(1);
// Remove the second-to-last item from the array
array.remove(-2);
// Remove the second and third items from the array
array.remove(1,2);
// Remove the last and second-to-last items from the array
array.remove(-2,-1);

约翰的网站


因为删除只从数组中的元素中删除对象,所以数组的长度不会改变。 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]);
}
链接地址: http://www.djcxy.com/p/2911.html

上一篇: Deleting array elements in JavaScript

下一篇: Benefits of creating a List using Arrays.asList()