Array.prototype.slice()
slice() 方法返回一個從開始到結束(不包括結束)的數組的一部分淺拷貝到一個新的數組對象。
原始數組不會發生改變。
語法
arr.slice()
arr.slice(start)
arr.slice(start,end)
參數說明
start
從索引開始位置開始計算起(0開始),如果參數為負數,那么就從原數組的倒數第幾個開始提取,比如 arr.slice(-2),那么提取的是從倒數第二個元素到最后一個元素(包括最后一個元素)。
如果省略start
,那么就從0開始提取。
end
在該索引結束元素提?。?開始),slice()會提取從start
到end
的所有元素(包括start,不包括end);
如果省略end
,那么會提取到最后一個元素,如果end
大于數組長度,會提取到最后一個元素。
返回值
返回一個新的數組
描述
slice()不修改原數組,淺拷貝一份元素到一個新的數組。
1.如果該元素是一個對象引用,slice會拷貝這個對象的引用到新的數組中,兩個元素同時對一個對象進行了引用,如果改變了被引用的對象,那么兩個數組中的對象都會發生改變。
2.對于String、Number、Boolean(不是對象)來說,拷貝到了新數組中,二者不管那個發生了改變,都不會影響另外一個數組。
3.如果向兩個數組任意一個添加了一個新元素,另一個不會受影響。
使用技巧
slice方法可以將一個類數組(Array-list)對象/集合轉成一個數組,你只需要將該方法綁定到這個對象上就可以了
實例:
function list(){
return [].slice.call(arguments);
}
let l = list(1,2,3); //[1,2,3]