目前为止,我们已经学习了如何添加元素到数组的开头或结尾处,以及怎样删除数组开头和结束位置上的元素。那如何在数组中的任意位置上删除或添加元素?
我们可以使用splice
方法,简单地通过指定位置/索引,就可以删除相应位置和数量的元素:
numbers.splice(5,3);
这行代码删除了从数组索引5开始的3个元素。这就意味着numbers[5]
、numbers[6]
和numbers[7]
从数组中删除了。现在数组里的值变成了-3、-2、-1、0、1、5、6、7、8、9、10、11和12(2、3、4已经被移除)。
对于JavaScript数组和对象,我们还可以用
delete
操作符删除数组中的元素,例如delete numbers[0]
。然而,数组位置0的值会变成undefined
,也就是说,以上操作等同于numbers[0] = undefined
。因此,我们应该始终使用splice
、pop
或shift
(马上就会学到)方法来删除数组元素。
现在,我们想把数字2、3、4插入数组里,放到之前删除元素的位置上,可以再次使用splice
方法:
numbers.splice(5,0,2,3,4);
splice
方法接收的第一个参数,表示想要删除或插入的元素的索引值。第二个参数是删除元素的个数(这个例子里,我们的目的不是删除元素,所以传入0)。第三个参数往后,就是要添加到数组里的值(元素2、3、4)。输出会发现值又变成了从-3到12。
最后,执行下这行代码:
numbers.splice(5,3,2,3,4);
输出的值是从-3到12。原因在于,我们从索引5开始删除了3个元素,但也从索引5开始添加了元素2、3、4。