使用数组元素上的delete
运算符而不是使用Array.splice
方法有什么Array.splice
?
例如:
myArray = ['a', 'b', 'c', 'd'];
delete myArray[1];
// or
myArray.splice (1, 1);
如果我能用对象删除数组元素,为什么甚至有拼接方法?
delete
将删除对象属性,但不会重新索引数组或更新其长度。这使它看起来好像是未定义的:
> myArray = ['a', 'b', 'c', 'd']
["a", "b", "c", "d"]
> delete myArray[0]
true
> myArray[0]
undefined
请注意,它实际上未设置为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"]
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);
因为 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]);
}