まくまくJavaScriptノート
配列と配列を結合する (concat)
2018-09-07

Array#concat() メソッドを使用すると、ある配列に別の配列の要素を結合した配列を新しく作成することができます。 自分自身の配列は変更されないことに気をつけてください。 結合後の配列は戻り値として受け取る必要があります。

var a = [1, 2, 3];
var b = a.concat([4, 5, 6]);
console.log(a);  // [1, 2, 3]
console.log(b);  // [1, 2, 3, 4, 5, 6]

上記では、Array#concat() メソッドのパラメータとして 1 つの配列を渡していますが、次のように個々の要素を複数のパラメータとして渡すこともできます。

var a = [1, 2, 3];
var b = a.concat(4, 5, 6);  // 3つのパラメータとして渡す
console.log(b);  // [1, 2, 3, 4, 5, 6]

ここまでの例でも分かるように、パラメータとして渡された配列は、1つ目の階層が展開された形で結合されます。 ただし、2階層より深い配列は展開されません。

var a = [1, 2];
var b = a.concat(3, 4, [5, 6]);    // [ 1, 2, 3, 4, 5, 6 ]
var c = a.concat([3, 4], [5, 6]);  // [ 1, 2, 3, 4, 5, 6 ]
var d = a.concat([3, 4, [5, 6]]);  // [ 1, 2, 3, 4, [ 5, 6 ] ]  // 配列内の配列はそのまま結合される

配列を展開せずに、配列のまま結合したい場合は、concat の代わりに push を使えばよいでしょう。

var a = [1, 2, 3];
var b = a.push([4, 5, 6]);
console.log(b);  //=> [ 1, 2, 3, [ 4, 5, 6 ] ]
2018-09-07