JavaScript陣列裡的slice和splice

亦世發表於2018-09-18
關於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方法返回擷取到底陣列

相關文章