JavaScriptにおける配列の複製: slice vs. forループ
JavaScriptで配列を複製する最も効率的な方法は、slice()
メソッドを使用することです。これは、元の配列から新しい配列を作成し、元の配列の要素をコピーします。
slice()
メソッドの使用
const originalArray = [1, 2, 3, 4, 5];
const duplicatedArray = originalArray.slice();
このコードでは、originalArray
のすべての要素を新しい配列duplicatedArray
にコピーします。slice()
メソッドは、引数として開始インデックスと終了インデックスを受け取ることができますが、引数を指定しない場合は、配列全体をコピーします。
for
ループの使用
for
ループを使用して配列を複製することもできますが、一般的にslice()
メソッドよりも効率が悪いです。
const originalArray = [1, 2, 3, 4, 5];
const duplicatedArray = [];
for (let i = 0; i < originalArray.length; i++) {
duplicatedArray.push(originalArray[i]);
}
このコードでは、originalArray
の各要素をループでduplicatedArray
に追加しています。
性能比較
slice()
メソッドは、for
ループよりも一般的に高速です。これは、slice()
メソッドがJavaScriptの組み込み機能であるため、最適化されているからです。ただし、配列が非常に大きい場合や、パフォーマンスが極めて重要なアプリケーションでは、for
ループの方がわずかに高速になることがあります。
slice()
メソッドを使用した配列複製
const originalArray = [1, 2, 3, 4, 5];
const duplicatedArray = originalArray.slice();
console.log(duplicatedArray); // 出力: [1, 2, 3, 4, 5]
- 説明
originalArray
は元の配列です。slice()
メソッドは、元の配列から新しい配列を作成し、指定された範囲の要素をコピーします。引数を指定しない場合は、配列全体をコピーします。duplicatedArray
は複製された新しい配列です。
for
ループを使用した配列複製
const originalArray = [1, 2, 3, 4, 5];
const duplicatedArray = [];
for (let i = 0; i < originalArray.length; i++) {
duplicatedArray.push(originalArray[i]);
}
console.log(duplicatedArray); // 出力: [1, 2, 3, 4, 5]
- 説明
for
ループを使用して、元の配列の各要素を新しい配列に追加します。
concat()
メソッド
concat()
メソッドは、複数の配列を結合して新しい配列を作成します。空の配列と元の配列を結合することで、元の配列の複製を作成できます。
const originalArray = [1, 2, 3, 4, 5];
const duplicatedArray = [].concat(originalArray);
spread syntax
spread syntax
は、配列やオブジェクトの要素を展開して、新しい配列やオブジェクトを作成します。空の配列に元の配列を展開することで、複製を作成できます。
const originalArray = [1, 2, 3, 4, 5];
const duplicatedArray = [...originalArray];
structuredClone()
メソッド
structuredClone()
メソッドは、任意のJavaScript値の深層コピーを作成します。配列を複製する場合にも使用できます。
const originalArray = [1, 2, 3, 4, 5];
const duplicatedArray = structuredClone(originalArray);
これらの代替方法の性能は、slice()
メソッドとfor
ループと比較して、一般的に類似しています。ただし、特定の状況では、これらの方法の方がわずかに高速または低速になることがあります。
javascript arrays duplicates