Phương thức push() giúp thêm 1 hay nhiều phần tử vào cuối mảng và trả về chiều dài mới của mảng.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Cú pháp
arr.push(element1[, ...[, elementN]])
Tham số
elementN- Các phần tử sẽ thêm vào cuối mảng.
Giá trị trả về
Giá trị mới của thuộc tính length của mảng mà phương thức được gọi thực thi.
Mô tả
Phương thức push giúp thêm các giá trị vào mảng.
push là "intentionally generic". Phương thức này có thể được dùng với call() hoặc apply() trên các đối tượng giống với mảng. Phương thức push phụ thuộc vào thuộc tính length để xác định vị trí bắt đầu thêm các giá trị mới. Nếu thuộc tính length không thể convert thành số, vị trí bắt đầu sẽ là 0. Điều này cũng bao gồm cả trường hợp thuộc tính length không tồn tại, khi đó length sẽ được tạo.
Các đối tượng tương tự mảng (array-like) như strings, không thích hợp để áp dụng phương thức này, vì các chuỗi là bất biến.
Ví dụ
Thêm phần tử vào mảng
Đoạn mã dưới đây tạo mảng sports gồm 2 phần tử, sau đó sẽ thêm 2 phần tử vào cuối mảng này. Biến total có giá trị là chiều dài mới của mảng.
var sports = ['soccer', 'baseball'];
var total = sports.push('football', 'swimming');
console.log(sports); // ['soccer', 'baseball', 'football', 'swimming']
console.log(total); // 4
Merge 2 mảng
Ví dụ này sẽ sử dụng apply() để thêm tất cả các phần tử từ mảng thứ 2 vào mảng đầu.
Không sử dụng phương thức này nếu mảng thứ 2 (trong ví dụ này là moreVegs) quá lớn, vì số lượng tối đa các tham số mà 1 hàm có thể nhận là giới hạn. Xem thêm chi tiết 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']
Sử dụng một đối tượng theo kiểu tương tự mảng
Như đã để cập ở trên, push là "intentionally generic", và chúng ta có thể lợi dụng điều đó. Array.prototype.push có thể được thực thi trên 1 đối tượng, như ví dụ dưới đây. Chú ý rằng chúng ta không tạo mảng để lưu trữ các đối tượng. Mà thay vào đó chúng ta lưu trữ trên chính bản thân đối tượng bằng cách sử dụng call trên Array.prototype.push để áp dụng phương thức như là đang thao tác với mảng, việc này có thể thực hiện được chính là nhờ cái cách mà JavaScript cho phép chúng ta thiết lập ngữ cảnh thực thi.
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
Chú ý rằng obj không phải là mảng, phương thức push vẫn tăng giá trị thuộc tính length của obj như khi chúng ta thao tác với 1 mảng thực sự.
Đặc tả
| Đặc tả | Trạng thái | Ghi chú |
|---|---|---|
| ECMAScript 3rd Edition (ECMA-262) | Standard | Định nghĩa lần đầu. Hiện thực trong 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 (ECMA-262) The definition of 'Array.prototype.push' in that specification. |
Living Standard |
Tương thích trình duyệt
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
push | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 5.5 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Legend
- Full support
- Full support