配列a
へ配列b
を破壊的にマージしたいがlet
を使わずに行いたいということで、スプレッド演算子を使ってArray#push()
するようなコードを書いた。同じようにlet
を使わずに書けるFunction#apply()
を使ったマージと違ってコードが短い。また引数由来の制限(実装依存)がない。
Array#concat()
を使って破壊的に配列をマージするコードは、通常、以下のように書かれる。破壊する場合は再代入するため、マージ先の配列はlet
を使い定義している。
let a = [0, 1, 2];
const b = [3, 4, 5];
a = a.concat(b);
スプレッド演算子とArray#push()
を使うと以下のように書ける。
const a = [0, 1, 2];
const b = [3, 4, 5];
a.push(...b);
追加するだけで再代入は必要ないため、マージ先の配列をconst
で定義できるわけだ。
単純な配列同士のマージだと、概ねスプレッド演算子を使ったコードの方が速いようだ。配列同士のマージを破壊的に行いたいという前提だとデメリットは特にないようだが、プロジェクトにおけるconst
の扱いによっては良くない書き方とされるかもしれない。