→
その Array 内で、指定の開始位置から終了位置までを指定位置からコピー変更し、Array 自身を返します。
元の Array は更新されます。
配列の長さは変わりません。
コピーは、シャロー コピー(浅いコピー)です。
arr | Arrayオブジェクト |
---|---|
target | コピー先の位置。0~。負の場合、target は最後から数えられます。
target が arr.length 以上の場合、何もコピーされません。 |
start | 省略可。要素のコピー元の開始位置。0~。
負の場合、start は最後から数えられます。 start が省略された場合、初期値は 0(arr の先頭から)です。 |
end | 省略可。要素のコピー元の終了位置で、コピーは end を含みません。0~。
負の場合、end は最後から数えられます。 end が省略された場合、最後までコピーします(つまり、初期値は arr.length です)。 |
¶Array。
copyWithin メソッドは C 言語や C++ 言語の memmove のような動きをし、Array のデータをシフトさせる高いパフォーマンスのメソッドです。これは特に TypedArray の同名メソッドに当てはまります。シーケンスはコピーされ貼り付けられる処理が一命令で行われます。コピー&ペースト領域が重なっている場合でも、ペーストされたシーケンスはコピーされた値を持ちます。
copyWithin 関数は、ジェネリック関数として動作します。this 値が Array オブジェクトである必要はありません。
copyWithin は可変メソッドであり、this オブジェクト自身を変更し、コピーではなく、オブジェクト自身を返します。
¶省く
D=[1, 2, 3, 4, 5].copyWithin(2); //=[1, 2, 1, 2, 3] D=[1, 2, 3, 4, 5].copyWithin(-2); //=[1, 2, 3, 1, 2] D=[1, 2, 3, 4, 5].copyWithin(0, 3); //=[4, 5, 3, 4, 5] D=[1, 2, 3, 4, 5].copyWithin(0, 3, 4); //=[4, 2, 3, 4, 5] D=[1, 2, 3, 4, 5].copyWithin(0, -2, -1); //=[4, 2, 3, 4, 5]
D=[].copyWithin.call({length:5, 3:10}, 1, 3); //={1:10, 3:10, length:5}
¶
// ES2015 型付き配列は Array のサブクラスです var i32a = new Int32Array([1, 2, 3, 4, 5]); D=i32a.copyWithin(0, 2); //=Int32Array[3, 4, 5, 4, 5] // まだ ES2015 に準拠していないプラットフォームの場合: D=[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4); //=Int32Array[4, 2, 3, 4, 5]