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 つ目の要素にマージさせています。

Do not use this method if the second array (moreVegs in the example) is very large, because the maximum number of parameters that one function can take is limited in practice. See apply() for more details.

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 Latest Draft (ECMA-262)
Array.prototype.push の定義
ドラフト  

ブラウザ対応

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
基本対応Chrome 完全対応 1Edge 完全対応 ありFirefox 完全対応 1IE 完全対応 5.5Opera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連情報

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

最終更新者: isdh,