Revision 335435 of Array.prototype.concat()

  • リビジョンの URL スラグ: JavaScript/Reference/Global_Objects/Array/concat
  • リビジョンのタイトル: Array.concat
  • リビジョンの ID: 335435
  • 作成日:
  • 作成者: ethertank
  • 現行リビジョン いいえ
  • コメント

このリビジョンの内容

概要

配列に他の配列や値をつないでできた新しい配列を返します。

Array のメソッド
実装されたバージョン: JavaScript 1.2, NES 3.0
ECMA バージョン: ECMA-262

構文

var resultArray = array.concat(value1, value2, ..., valueN);

引数

valueN
結果となる配列に連結させる配列や値。

説明

concat は、メソッドを呼び出した this オブジェクトの要素に、与えられた引数の要素 (引数が配列である場合) または引数そのもの (引数が配列でない場合) が順に続く、新しい配列オブジェクトを生成します。

concatthis や引数として与えられた配列を変更しませんが、その代わりに元の配列から結合させた同じ要素のコピーを含む「1 段階深い」コピーを返します。元の配列の要素は以下のようにして新しい配列にコピーされます。

  • オブジェクトの参照 (実際のオブジェクトではなく): concat はオブジェクトの参照を新しい配列にコピーします。元の配列も新しい配列も同じオブジェクトを参照します。これはつまり、もし参照されているオブジェクトが修正されれば、その変更は元の配列と新しい配列の両方に現れるわけです。
  • 文字列や数値 (String オブジェクトや Number オブジェクトではなく): concat は文字列や数値の値を新しい配列にコピーします。

新しい配列へどんな操作をしても、元の配列には影響しません。逆もまた同様です。

例: 2 つの配列を連結させる

以下のコードは 2 つの配列を連結させます。

var alpha = ["a", "b", "c"];
var numeric = [1, 2, 3];

// 配列 ["a", "b", "c", 1, 2, 3] を生成; alpha と numeric は変化しません
var alphaNumeric = alpha.concat(numeric);

例: 3 つの配列を連結させる

以下のコードは 3 つの配列を連結させます。

var num1 = [1, 2, 3];
var num2 = [4, 5, 6];
var num3 = [7, 8, 9];

// 配列 [1, 2, 3, 4, 5, 6, 7, 8, 9] を生成; num1, num2, num3 は変化しません
var nums = num1.concat(num2, num3);

例: 配列に値を連結させる

以下のコードは配列に値を連結させます。

var alpha = ['a', 'b', 'c'];

// 配列 ["a", "b", "c", 1, 2, 3] を生成し, alpha は変化せずそのまま
var alphaNumeric = alpha.concat(1, [2, 3]);

関連情報

  • push / pop - 配列末尾への要素の追加 / 配列末尾の要素の削除
  • shift / unshift - 配列の先頭に要素を追加 / 配列の先頭の要素を削除
  • splice - 配列の指定位置に要素を追加 / 指定位置の要素を削除

このリビジョンのソースコード

<h2 id="Summary" name="Summary">概要</h2>
<p>配列に他の配列や値をつないでできた新しい配列を返します。</p>
<table class="standard-table">
  <tbody>
    <tr>
      <td class="header" colspan="2"><a href="/ja/JavaScript/Reference/Global_Objects/Array" title="ja/JavaScript/Reference/Global_Objects/Array">Array</a> のメソッド</td>
    </tr>
    <tr>
      <th>実装されたバージョン:</th>
      <td>JavaScript 1.2, NES 3.0</td>
    </tr>
    <tr>
      <th>ECMA バージョン:</th>
      <td>ECMA-262</td>
    </tr>
  </tbody>
</table>
<h2 id="Syntax" name="Syntax">構文</h2>
<pre class="syntaxbox">
var resultArray = <em>array</em>.concat(<em>value1</em>, <em>value2</em>, ..., <em>valueN</em>);
</pre>
<h3 id="Parameters" name="Parameters">引数</h3>
<dl>
  <dt>
    <code>value<em>N</em></code></dt>
  <dd>
    結果となる配列に連結させる配列や値。</dd>
</dl>
<h2 id="Description" name="Description">説明</h2>
<p><code>concat</code> は、メソッドを呼び出した <code>this</code> オブジェクトの要素に、与えられた引数の要素 (引数が配列である場合) または引数そのもの (引数が配列でない場合) が順に続く、新しい配列オブジェクトを生成します。</p>
<p><code>concat</code> は <code>this</code> や引数として与えられた配列を変更しませんが、その代わりに元の配列から結合させた同じ要素のコピーを含む「1 段階深い」コピーを返します。元の配列の要素は以下のようにして新しい配列にコピーされます。</p>
<ul>
  <li>オブジェクトの参照 (実際のオブジェクトではなく): <code>concat</code> はオブジェクトの参照を新しい配列にコピーします。元の配列も新しい配列も同じオブジェクトを参照します。これはつまり、もし参照されているオブジェクトが修正されれば、その変更は元の配列と新しい配列の両方に現れるわけです。</li>
  <li>文字列や数値 (<a href="/ja/JavaScript/Reference/Global_Objects/String" title="ja/JavaScript/Reference/Global_Objects/String">String</a> オブジェクトや <a href="/ja/JavaScript/Reference/Global_Objects/Number" title="ja/JavaScript/Reference/Global_Objects/Number">Number</a> オブジェクトではなく): <code>concat</code> は文字列や数値の値を新しい配列にコピーします。</li>
</ul>
<p>新しい配列へどんな操作をしても、元の配列には影響しません。逆もまた同様です。</p>
<h2 id="Examples" name="Examples">例</h2>
<h3 id="Example:_Concatenating_two_arrays" name="Example:_Concatenating_two_arrays">例: 2 つの配列を連結させる</h3>
<p>以下のコードは 2 つの配列を連結させます。</p>
<pre class="brush:js">
var alpha = ["a", "b", "c"];
var numeric = [1, 2, 3];

// 配列 ["a", "b", "c", 1, 2, 3] を生成; alpha と numeric は変化しません
var alphaNumeric = alpha.concat(numeric);
</pre>
<h3 id="Example:_Concatenating_three_arrays" name="Example:_Concatenating_three_arrays">例: 3 つの配列を連結させる</h3>
<p>以下のコードは 3 つの配列を連結させます。</p>
<pre class="brush:js">
var num1 = [1, 2, 3];
var num2 = [4, 5, 6];
var num3 = [7, 8, 9];

// 配列 [1, 2, 3, 4, 5, 6, 7, 8, 9] を生成; num1, num2, num3 は変化しません
var nums = num1.concat(num2, num3);
</pre>
<h3 id="Example:_Concatenating_values_to_an_array" name="Example:_Concatenating_values_to_an_array">例: 配列に値を連結させる</h3>
<p>以下のコードは配列に値を連結させます。</p>
<pre class="brush:js">
var alpha = ['a', 'b', 'c'];

// 配列 ["a", "b", "c", 1, 2, 3] を生成し, alpha は変化せずそのまま
var alphaNumeric = alpha.concat(1, [2, 3]);
</pre>
<h2 id="See_also" name="See_also">関連情報</h2>
<ul>
  <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/push" title="JavaScript/Reference/Global_Objects/Array/push">push</a> / <a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/pop" title="JavaScript/Reference/Global_Objects/Array/pop">pop</a> - 配列末尾への要素の追加 / 配列末尾の要素の削除</li>
  <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/shift" title="JavaScript/Reference/Global_Objects/Array/shift">shift</a> / <a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/unshift" title="JavaScript/Reference/Global_Objects/Array/unshift">unshift</a> - 配列の先頭に要素を追加 / 配列の先頭の要素を削除</li>
  <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/splice" title="JavaScript/Reference/Global_Objects/Array/splice">splice</a> - 配列の指定位置に要素を追加 / 指定位置の要素を削除</li>
</ul>
このリビジョンへ戻す