JavaScript slice()とconcat() - 配列の抽出とマージ
Array.slice()でサブ配列を抽出し、concat()で配列を不変にマージ。シャローコピー、ページネーション、スプレッド演算子の代替を含みます。無料リファレンス。
Extraction
詳細な説明
slice()とconcat()を理解する
両メソッドとも非変更です — 常に新しい配列を返し、元の配列はそのままです。
Array.slice()
配列のセクションを抽出:
const arr = ["a", "b", "c", "d", "e"];
arr.slice(1, 3); // ["b", "c"]
arr.slice(-2); // ["d", "e"]
arr.slice(); // シャロークローン
シャローコピーの動作
slice()はシャローコピーを作成します。ネストされたオブジェクトは参照を共有:
const original = [{ x: 1 }, { x: 2 }];
const copy = original.slice();
copy[0].x = 99;
console.log(original[0].x); // 99 — 同じオブジェクト!
Array.concat()
配列や値を新しい配列にマージ:
const a = [1, 2];
const b = [3, 4];
a.concat(b); // [1, 2, 3, 4]
スプレッド演算子の代替
const merged = [...a, ...b];
const withNew = [...existingItems, newItem];
ユースケース
slice()はページネーション、サブ配列の抽出、ソートやリバース前のシャローコピー作成、最後のN要素の取得に使用します。concat()やスプレッド演算子は元のデータを変更せずに複数ソースからデータをマージする場合に使用します。