splice和slice的区别
splice和slice是数组里的两个重要的方法。
1、splice
splice会改变原数组,他通过删除或者替换现有元素或者原地添加新的元素来修改数组,并且以数组形式返回被修改的内容。
有三个参数
- start,指定修改的开始位置,如果超出数组的长度,则从数组末尾开始添加;如果是负值,从数组末尾开始第几位;如果负数也大于数组的长度,则开始位置为0
- deleteCount 可选参数,表述要移除的数组元素的个数。
- item1,item2,可选,表示要添加进数组的元素。
/**
* splice
*/
var nums = [1,2,3]
// 将2换成4
nums.splice(1,1,4) // 从数组下标1开始,操作1个,替换成4
console.log(nums) // [1,4,3]
// 删除4
nums.splice(1,1) // 从数组下标1开始,操作1个,不替换
console.log(nums) // [1,3]
2、slice
slice返回由start和end决定的一个浅拷贝的新数组,原数组不会改变。
有两个参数
- start,起始索引,从该索引提取原数组元素,如果是负数,则从末尾开始;如果省略start,则默认是数组的0下标开始
- end,结束索引,在该索引结束提取原数组元素,如果end被省略,slice会一直到末尾;如果end大于数组的长度,也会提取到数组末尾。
var arr = [1,2,3,4,5]
// 删除3
var arr1 = arr.slice(0,2) // 从第0个开始,删除第2个
console.log(arr1);
// 保留3以后的
var arr2 = arr.slice(2)
console.log(arr2);
总结
- splice改变原数组,slice不改变原数组。
- splice除了可以删除之外,还可以插入。
- splice可传入3个参数,slice接受2个参数。