var numbers = [1, 2, 3]; numbers.push(4); console.log(numbers); // [1, 2, 3, 4] numbers.push(5, 6, 7); console.log(numbers); // [1, 2, 3, 4, 5, 6, 7]
var sports = ["soccer", "baseball"]; var total = sports.push("football", "swimming"); console.log(sports); // ["soccer", "baseball", "football", "swimming"] console.log(total); // 4
語法
arr.push(element1, ..., elementN)
參數
-
elementN
- 被添加到數組末尾的元素。
返回值
當調用該方法時,新的 length
屬性值將被返回。
描述
push方法將值追加到數組中。
push
方法有意具有通用性。該方法和 call()
或 apply()
一起使用時,可應用在類似數組的對象上。push
方法根據 length
屬性來決定從哪里開始插入給定的值。如果 length
不能被轉成一個數值,則插入的元素索引為 0,包括 length
不存在時。當 length
不存在時,將會創建它。
唯一的原生類數組(array-like)對象是 Strings
,盡管如此,它們並不適用該方法,因為字符串是不可改變的。
合並兩個數組
var vegetables = ['parsnip', 'potato']; var moreVegs = ['celery', 'beetroot']; // 將第二個數組融合進第一個數組 // 相當於 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 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 屬性增長了,就像我們處理一個實際的數組一樣。