push() メソッドは、配列の末尾に 1 つ以上の要素を追加することができます。また戻り値として新しい配列の要素数を返します。

構文

array.push(element1, ..., elementN)

引数

element1, ..., elementN
配列の末尾に追加する要素。

戻り値

メソッドが呼び出されたオブジェクトの新しい length プロパティ。

説明

push メソッドは配列の末尾に要素を追加します。

 

push はジェネリックメソッドとして用意されています。そのため call()apply() と一緒にオブジェクトに対して利用することもできます。なお、push は配列の末尾から要素を挿入する必要性があるため、 length プロパティに依存しています。length が数値に変換できない場合、0 が用いられます。また、 length が存在しない場合は length も作成されることになります。

ネイティブのみで、配列のようなオブジェクトは strings ですが、文字列は変化しないので、このメソッドの効果を受けるには相応しくありません。

配列に要素を追加する

以下のコードは 2 つの要素を持つ配列 sports を生成し、それに 2 つの要素を追加します。コードの実行後、変数 total には 4 が入ります。

var sports = ['soccer', 'baseball'];
var total = sports.push('football', 'swimming');

console.log(sports); // ['soccer', 'baseball', 'football', 'swimming']
console.log(total);  // 4

2つの配列をマージする

この例では apply() を利用することで 2 つ目の配列の全ての要素を 1 つ目の要素にマージさせています。

var vegetables = ['parsnip', 'potato'];
var moreVegs = ['celery', 'beetroot'];

// 1 つ目の配列に 2 つ目の配列をマージさせます
// vegetables.push('celery', 'beetroot'); と同じ結果になります
Array.prototype.push.apply(vegetables, moreVegs);

console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot']

配列風にオブジェクトを使用する

上述したように、push は内部的にはげジェネリックで、その利点を活かすことができます。この例が示しているように、オブジェクト上で Array.prototype.push は正しく動作します。オブジェクトのコレクションを保存するために、配列を生成していないことに注意してください。代わりに、コレクションをオブジェクト自体に保存して、配列を扱っているかのように見せかけるために Array.prototype.push 上で call を使用しています。そして、JavaScript は実行コンテキストの確立を許可しているおかげで、これは動作します。

var obj = {
    length: 0,

    addElem: function addElem (elem) {
        // obj.length は、要素が追加されるたびに自動的に増分する。
        [].push.call(this, elem);
    }
};

// 例示のために空のオブジェクトを追加する。
obj.addElem({});
obj.addElem({});
console.log(obj.length);
// → 2

obj は配列ではありませんが、本当の配列を扱っているかのように push メソッドは objlength プロパティを増加させできていることに注意してください。

仕様

仕様 ステータス コメント
ECMAScript 3rd Edition (ECMA-262) 標準 初期のバージョンです。JavaScript 1.2. から実装されています。
ECMAScript 5.1 (ECMA-262)
Array.prototype.push の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Array.prototype.push の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Array.prototype.push の定義
標準  
ECMAScript 2017 Draft (ECMA-262)
Array.prototype.push の定義
ドラフト  

ブラウザ対応

機能 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
基本サポート (有) (有) (有) (有) (有) (有)

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama, kamekame, mamodayo, teoli, ethertank, Potappo, Yuichirou, Shoot, Mgjbot
 最終更新者: YuichiNukiyama,