El método push() agrega uno o más elementos al final de un array y devuelve la nueva longitud del array.

Sintaxis

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

Parámetros

elementN
Los elementos a añadir al final del array.

Valor devuelto

La nueva propiedad length del objeto sobre el cual se efectuó la llamada.

Descripción

El método push es muy práctico para añadir valores a un array.

push es genérico intencionadamente. Este método puede ser call() o apply() a objetos que representen arrays. El método push depende de la propiedad length para decidir donde empezar a insertar los valores dados. Si el valor de la propiedad length no puede ser convertido en numérico, el índice 0 es usado. Esto permite la posibilidad de que la propiedad length sea inexistente, y en este caso length será creado.

Los únicos objetos nativos que se asemejen al array son strings objetos, aunque estos no se puedan usar en la aplicación de este método ya que son inmutables.

Ejemplos

Ejemplo: Añadiendo elementos a un array

El siguiente código crea el array deportes que contiene dos elementos, luego añade 2 elementos más. Tras ejecutar el código, deportes contiene 4 elementos: "soccer", "baseball", "football" and "swimming".

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

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

Uniendo dos arrays

This example uses apply() to push all elements from a second array.

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'];

// 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']

Using an object in an array-like fashion

As mentioned above, push is intentionally generic, and we can use that to our advantage. Array.prototype.push can work on an object just fine, as this example shows. Note that we don't create an array to store a collection of objects. Instead, we store the collection on the object itself and use call on Array.prototype.push to trick the method into thinking we are dealing with an array, and it just works, thanks to the way JavaScript allows us to establish the execution context however we please.

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

Note that although obj is not an array, the method push successfully incremented obj's length property just like if we were dealing with an actual array.

Especificaciones

Especificación Estado Comentario
ECMAScript 3rd Edition (ECMA-262) Standard Definición inicial. Implementado en JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
La definición de 'Array.prototype.push' en esta especificación.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La definición de 'Array.prototype.push' en esta especificación.
Standard  
ECMAScript Latest Draft (ECMA-262)
La definición de 'Array.prototype.push' en esta especificación.
Draft  

Compatibilidad en navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Soporte básicoChrome Soporte completo 1Edge Soporte completo SiFirefox Soporte completo 1IE Soporte completo 5.5Opera Soporte completo SiSafari Soporte completo SiWebView Android Soporte completo SiChrome Android Soporte completo SiEdge Mobile Soporte completo SiFirefox Android Soporte completo 4Opera Android Soporte completo SiSafari iOS Soporte completo SiSamsung Internet Android Soporte completo Sinodejs Soporte completo Si

Leyenda

Soporte completo  
Soporte completo

Ver también

Etiquetas y colaboradores del documento

Colaboradores en esta página: AlePerez92, _cuco_, fcojgodoy, Aldomolina, alvarouribe, teoli, mhauptma73
Última actualización por: AlePerez92,