应该使用Array.prototype.splice
来删除数组的元素,而不应该使用delete
。
var array=['a','b','c'];
array.splice(1,1); //['b']
array //['a','c']
var array=['a','b','c'];
delete array[1]; //true
array //['a',undefined*1,'c']
注意:
关于 ['a',undefined*1,'c']
与['a',undefined,'c']
(1)两者array[1]===undefined
(2)两者array.length===3
(3)前者array[1]
位置上实际上是一个空洞,for in不会遍历到array[1]
。
for(var i in array){
//0,2
}
后者for in可以遍历到array[1]
。
for(var i in array){
//0,1,2
}