splice 和 slice 在使用时,经常会忘记二者的区别,造成混淆
其实,关键在于区分二者的参数:
1. splice(index,howmany,item1,.....,itemX)
index: 必选。从index处开始的零个或多个元素。
Howmany:必选。删除多少个元素
item1, ..., itemX可选。要添加到数组的新元素
2. slice(start,end)
start:必需。从何处开始选取。
如果是负数,那么它规定从数组尾部开始算起的位置。
-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。
如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
其次,splice 会改变原数组,而 slice 不会。
以上可以看出:splice() 方法用于插入、删除或替换数组的元素;
slice() 方法可从已有的数组中返回选定的元素
原理搞清楚了,写个demo加深下印象:
var arr1 = ['a','b','c','d','e'];
var arr2 = arr1.splice(1,2,'newvalue');
console.log(arr2);// ["b", "c"]
console.log(arr1);//["a", "newvalue", "d", "e"]
var arr1 = ['a','b','c','d','e'];
console.log(arr1.slice(0,2));//["a", "b"]
console.log(arr1);//["a", "b", "c", "d", "e"]