let arr=[1,2,3]; delete arr[1]; //返回值为true,arr变为[1,empty,3] arr.length; //3可以看到使用 delete 运算符删除元素之后,对应索引的元素空位会保留下来,后边的元素并不会向前移动,数组的长度也不会发生变化。
1 in arr; //false arr[i]; //undefined可以看到索引为1的元素不存在了,访问它的值会返回 undefined。
let arr=[1,2,3]; arr[1]=undefined; 1 in arr; //true arr[1]; //undefined可以看到 arr[1] 的值仍为 undefined,但是使用 in 判断时,1 这个索引位置的元素还是存在于数组中的。
let arr=[1,2,3]; arr.splice(1,1); //[2] arr; //[1,3]arr 变成了 [1,3],splice() 会返回被删除的元素,因为它支持删除多个元素,所以返回的结果是包含被删除元素的数组,如果只删除了一个元素,则也会把它放到结果数组中,例如上例中 splice() 的返回值为 [2]。
let arr=[1,2,3,4,5]; arr.splice(3); //[4,5] arr; //[1,2,3]splice() 还可接收第3个参数,它是一个变长的参数,用于指定要添加的元素,即在删除元素之后,从第1个参数指定的位置再添加新的元素,后面的元素会顺序后移,因此 splice() 还支持添加和替换元素。
let arr=[1,3,5,7]; arr.splice(2,0,2,4); //[] arr; //[1,3,2,4,5,7]这时,因为要删除的元素的数量为 0,所以 splice() 会返回一个空的数组,原数组则原地新增了3个元素,上方代码把2和4放到了索引为 2、3 的位置,然后5和7分别向后移动了1位。
let arr=[1,3,5,7]; arr.splice(2,2,2,4); //[5,7] arr; //[1,3,2,4]这里从索引为2的位置删除了2个元素,即5和7,之后在索引为2的位置添加了2个新的元素2和4,最后结果就是 [1,3,2,4]。
let arr=["a","b","c"]; arr.splice(3,10,"d","e","f"); //[] arr; //["a","b","c","d","e","f"]
let arr=[1,2,3,4]; arr.length; //4 arr.length=2; arr; //[1,2] arr.length=0; arr; //[]把 arr.length 设置为2之后,超过2个的元素直接被舍弃了。当把数组的 length 设置为0时,数组就变成了空数组。
本文链接:http://task.lmcjl.com/news/5908.html