push() 方法會添加一個或多個元素至陣列的末端,並且回傳陣列的新長度。

語法

arr.push(element1, ..., elementN)

參數

elementN
欲添加至陣列的元素。

回傳值

當方法被呼叫時,會根據物件的屬性回傳新的length

描述

push 方法會把數值增加到陣列。

push 這個方法被使用在 call() 或 apply() 像是陣列的物件上。 這個 push 方法依賴一個 length 屬性來判斷,從哪裡開始插入給定值。如果 length 屬性的數字沒有改變,索引值則使用 0。這包括 length 不存在的可能性,在這個情況下 length 也將被建立。

類似陣列的物件有 strings,他們不適合用在這個方法,像字串是不可變的。

範例

將複數個元素添加至陣列

以下的程式碼會建立含有兩個元素的陣列 sports,接著再增加兩個元素進來。新結果的長度以變數 total 表示。

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

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

合併兩個陣列

這個範例使用 apply() 從第二個陣列中推送所有的元素。

如果第二個陣列 (範例中的moreVegs) 非常大,就不要使用這個方法。因為參數的最大數值,在 function 執行中可能會受到限制。查看更多 apply() 的詳細資料。

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

// Merge the second array into the first one
// Equivalent to vegetables.push('celery', 'beetroot');
Array.prototype.push.apply(vegetables, moreVegs);

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

在一個類似陣列的方式中使用物件

正如剛才提到的,push 是故意通用的,我們可以利用它來實現我們的優勢。 Array.prototype.push 可以在物件上運作的很好,如本範例所示。請注意,我們不會創見一個陣列來儲存收集到的物件。相反地,we store the collection 在物件本身,並在 call時使用 Array.prototype.push 來欺騙這個方法去思考我們正在處理的陣列可以繼續運作。感謝 JavaScript 允許我們使用這個方法去執行上下文。

var obj = {
    length: 0,

    addElem: function addElem (elem) {
        // obj.length is automatically incremented every time an element is added.
        [].push.call(this, elem);
    }
};

// Let's add some empty objects just to illustrate.
obj.addElem({});
obj.addElem({});
console.log(obj.length);
// → 2

請注意 obj 不是一個陣列,這個方法 push 成功增加 obj 的 length 屬性就像我們處理一個實際的陣列一樣。

規範

規範 狀態 評論
ECMAScript 3rd Edition (ECMA-262) Standard Initial definition. Implemented in JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
The definition of 'Array.prototype.push' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.push' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'Array.prototype.push' in that specification.
Living Standard  

瀏覽器支援度

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 1.0 1.0 (1.7 or earlier) 5.5 (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

閱讀更多

文件標籤與貢獻者

標籤: 
 此頁面的貢獻者: yvonne6344, iigmir, ALiangLiang
 最近更新: yvonne6344,