concat() メソッドは、配列に他の配列や値をつないでできた新しい配列を返します。
構文
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
引数
valueN- 新しい配列に連結させる配列や値。詳細は以下を参照のこと。
戻り値
新しい Array インスタンス。
説明
concat は、メソッドを呼び出した this オブジェクトの要素に、与えられた引数の要素 (引数が配列である場合) または引数そのもの (引数が配列でない場合) が順に続く、新しい配列オブジェクトを生成します。
concat は this や引数として与えられた配列を変更しませんが、その代わりに元の配列から結合させた同じ要素のコピーを含むシャローコピー (1 次元の配列要素までの浅いコピー) を返します。元の配列の要素は以下のようにして新しい配列にコピーされます。
- オブジェクトの参照 (実際のオブジェクトではなく):
concatはオブジェクトの参照を新しい配列にコピーします。元の配列も新しい配列も同じオブジェクトを参照します。これはつまり、もし参照されているオブジェクトが修正されれば、その変更は元の配列と新しい配列の両方に現れるわけです。 - 文字列や数値、真偽値 (
StringオブジェクトやNumberオブジェクト、Booleanオブジェクトではなく):concatは文字列や数値の値を新しい配列にコピーします。
ノート: 連結した配列/値は元の配列には手を付けません。さらに、新しい配列へどんな操作をしても、元の配列には影響しません。逆もまた同様です(要素がオブジェクト参照ではない場合のみです)。
例
例: 2 つの配列を連結させる
以下のコードは 2 つの配列を連結させます。
var alpha = ['a', 'b', 'c'],
numeric = [1, 2, 3];
var alphaNumeric = alpha.concat(numeric);
console.log(alphaNumeric); // Result: ['a', 'b', 'c', 1, 2, 3]
例: 3 つの配列を連結させる
以下のコードは 3 つの配列を連結させます。
var num1 = [1, 2, 3],
num2 = [4, 5, 6],
num3 = [7, 8, 9];
var nums = num1.concat(num2, num3);
console.log(nums);
// results in [1, 2, 3, 4, 5, 6, 7, 8, 9]
例: 配列に値を連結させる
以下のコードは配列に値を連結させます。
var alpha = ['a', 'b', 'c']; var alphaNumeric = alpha.concat(1, [2, 3]); console.log(alphaNumeric); // Result: ['a', 'b', 'c', 1, 2, 3]
仕様
| 仕様 | ステータス | コメント |
|---|---|---|
| ECMAScript 3rd Edition (ECMA-262) | 標準 | 初期定義。JavaScript 1.2 で実装。 |
| ECMAScript 5.1 (ECMA-262) Array.prototype.concat の定義 |
標準 | |
| ECMAScript 2015 (6th Edition, ECMA-262) Array.prototype.concat の定義 |
標準 | |
| ECMAScript 2017 Draft (ECMA-262) Array.prototype.concat の定義 |
ドラフト |
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | 1.0 | 1.0 (1.7 or earlier) | 5.5 | (有) | (有) |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | (有) | (有) | (有) | (有) | (有) | (有) |
関連情報
push/pop- 配列末尾への要素の追加 / 配列末尾の要素の削除unshift/shift- 配列の先頭に要素を追加 / 配列の先頭の要素を削除splice- 配列の指定位置に要素を追加 / 指定位置の要素を削除String.prototype.concat()Symbol.isConcatSpreadable– 平坦化を制御