在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