關於slice和splice,有些人會搞不清楚,查了一部落格,自己做了驗證,下面簡單總結一下他們的用法和區別。
用法:
slice:擷取陣列 [start, end) /*從start下標開始---end-1下標結束*/
splice:
引數(開始項的下標,剪下長度,剪下以後最後一位開始新增資料)
var arr = ['a', 'b', 'c', 'd'];
arr.splice(1, 2, 1,2,3,4,5) //arr變為['a', 1, 2, 3, 4, 5, 'd']
var arr = ['a', 'b', 'c', 'e'];
arr.splice(3, 0, 'd') //arr變為['a', 'b', 'c', 'd', 'e'];
arr.splice(-1,0,'d')同樣可以實現,陣列從後往前數下標從-1開始
區別:從用法裡就能看到區別了,但是我覺得他們還有一個最主要的區別是slice方法不改變原陣列,splice方法改變原陣列。看程式碼
var arr = [];
arr[0]=1;
arr[1]=2;
arr[3]='abc';
arr[5]=true;
console.log(arr); //[ 1, 2, <1 empty item>, 'abc', <1 empty item>, true ]
console.log(arr.slice(0,4)); //[ 1, 2, <1 empty item>, 'abc' ]
console.log(arr); //[ 1, 2, <1 empty item>, 'abc', <1 empty item>, true ]
console.log(arr.splice(0,3, 3,4,5)); //[ 1, 2, <1 empty item> ]
console.log(arr) //[ 3, 4, 5, 'abc', <1 empty item>, true ]複製程式碼
可以看出:slice方法不會改變原陣列,slice方法返回新擷取的陣列
splice方法改變原陣列,splice方法返回擷取到底陣列