slice() 中文直譯為切片,即是從陣列複製一份出來。
有時我們想要處理陣列資料,又不想動到原始資料,因為一但動到原始資料就無法回復原本的樣子,甚至要比對都無從比對,這時 slice()就常派上用場。
這點感覺有點像 git,先把資料 pull 一份下來的動作一樣。
語法:arr.slice([begin[, end]]) ,參數一是從哪裡切,參數二是切到哪裡,如果要全部複製則可填 0,如有第二參數,它的索引值為指定的前一個
MDN:slice();
1
| var amis = ['Ayda', 'Phi', 'Alex', 'Chris', 'Tracy', 'Thomas', 'Jean'];
|
沒給參數和參數零的結果是一樣的
1 2 3 4 5
| var amis2 = amis.slice(); console.log('沒參數: ' + amis2);
var amis3 = amis.slice(0); console.log('參數0: ' + amis3);
|
只給一個參數,會從給的 index 開始切
1 2
| var amis4 = amis.slice(2); console.log('只給一個參數: ' + amis4);
|
給負數參數,會從最後面開始取
1 2
| var amis5 = amis.slice(-2); console.log('給負數參數: ' + amis5);
|
給兩個參數,
1 2 3 4 5 6 7 8
| var amis6 = amis.slice(2, -2); console.log('給兩個參數: ' + amis6);
var amis7 = amis.slice(2, 4); console.log('給兩個參數: ' + amis7);
console.log('原始陣列不變: ' + amis);
|
在使用 slice() 的時候並不需要再用另一個變數去接結果,因為使用 slice()時,就會自動的在新的記憶體位址產生。
1
| console.log(amis.slice(2, 4));
|