→
サイズを変更せずに、配列の一部を同じ配列内の別の場所にシャロー コピーして返します。
arr | Arrayオブジェクト |
---|---|
target | シーケンスのコピー先となる、0 から始まるインデックスです。負の場合、target は最後から数えられます。
target が arr.length 以上の場合、何もコピーされません。 target が start より後に配置されている場合、コピーされたシーケンスは arr.length に合うように切り詰められます。 |
start | 省略可。要素のコピー元の始まりを表す、0 から始まるインデックスです。
負の場合、start は最後から数えられます。 start が省略された場合、copyWithin は最初の要素からコピーします(つまり、初期値は 0 です)。 |
end | 省略可。要素のコピー元の末尾を表す、0 から始まるインデックスです。
copyWithin のコピーは end を含みません。 負の場合、end は最後から数えられます。 end が省略された場合、copyWithin は最後までコピーします(つまり、初期値は arr.length です)。 |
変更された配列です。
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]