天天看點

es6 數組執行個體新增的 copyWithin()

數組執行個體的copyWithin方法,在目前數組内部,将指定位置的成員複制到其他位置(會覆寫原有成員),然後傳回目前數組。也就是說,使用這個方法,會修改目前數組。

Array.prototype.copyWithin(target, start = 0, end = this.length)
           

它接受三個參數。

target (必需):從該位置開始替換資料。

start (可選):從該位置開始讀取資料,預設為 0 。如果為負值,表示倒數。

end (可選):到該位置前停止讀取資料,預設等于數組長度。如果為負值,表示倒數。

這三個參數都應該是數值,如果不是,會自動轉為數值。

//  将 3 号位複制到 0 号位
[1, 2, 3, 4, 5].copyWithin(0, 3, 4)
// [4, 2, 3, 4, 5]
// -2 相當于 3 号位, -1 相當于 4 号位
[1, 2, 3, 4, 5].copyWithin(0, -2, -1)
// [4, 2, 3, 4, 5]
//  将 3 号位複制到 0 号位
[].copyWithin.call({length: 5, 3: 1}, 0, 3)
// {0: 1, 3: 1, length: 5}
//  将 2 号位到數組結束,複制到 0 号位
var i32a = new Int32Array([1, 2, 3, 4, 5]);
i32a.copyWithin(0, 2);
// Int32Array [3, 4, 5, 4, 5]
//  對于沒有部署 TypedArray 的 copyWithin 方法的平台
//  需要采用下面的寫法
[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);
// Int32Array [4, 2, 3, 4, 5]
           

繼續閱讀