splice删除和添加操作!
很多人对传入两个以上的参数这种用法可能比较陌生。相对熟悉的应该还是 splice 用于删除的操作:
splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
const arr = [1,2];
const beEdiot = arr.splice(1,1);
console.log('原数组===>',arr.toString());
console.log('被删掉===>',beEdiot.toString());
输出
> "原数组===>"1"
> "被删掉===>"2"
可以看到,从索引值1开始删掉一个元素,splice返回的是被删掉的部分[2]
,原数组被改变,变为删除元素后的数组[1]
!
传入两个以上参数这种用法,是用于在删除的同时完成数组元素的新增。
而从第三个位置开始的入参,都代表着需要添加到数组里的元素的值:
const arr = [0,1,6]
const beEdiot = arr.splice(2,0,2,3,4,5)
console.log('原数组===>',arr.toString());
console.log('被删掉===>',beEdiot.toString());
在这里,我们就会从索引2的位置开始删除0个元素,然后索引2的位置被换成了后续需要添加的元素!其他的元素被挤在了后面!
> "原数组===>" "0,1,2,3,4,5,6"
> "被删掉===>" ""
经常拿来对比的slice的
和splice最大的区别就是这个不会改变原数组!
slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
const arr = [0,1,6]
const beEdiot = arr.slice(1,2);// 从索引1删到索引2,前包后不包
console.log('原数组===>',arr.toString());
console.log('被删掉===>',beEdiot.toString());
输出
> "原数组===>" "0,1,6"
> "被删掉===>" "1"
可以发现返回的也是被删除的元素组成的数组!原数组没有被修改!
评论区