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()やスプレッド演算子は元のデータを変更せずに複数ソースからデータをマージする場合に使用します。

試してみる — JavaScript Array Methods Reference

フルツールを開く