Il metodo push() aggiunge uno o più elementi alla fine di un array e ne restituisce la nuova lunghezza.

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]

Sintassi

arr.push([elemento1[, ...[, elementoN]]])

Parametri

elementoN
Gli elementi da aggiungere alla fine dell'array.

Valore di ritorno

La nuova proprietà length dell'oggetto su cui è stato richiamato il metodo.

Descrizione

Il metodo push aggiunge valori all'array.

push è intenzionalmente generico. Questo metodo può essere utilizzato con call() o apply() su oggetti che assomigliano a un array. Il metodopush si basa sulla proprietà length per determinare da dove iniziare l'inserimento dei valori indicati. Se la proprietà length non può essere convertita in un numero, l'indice utilizzato è 0. Ciò include la possibilità che length sia inesistente, in tale caso length verrà creata.

Gli unici ogetti nativi simili agli array sono strings, anche se non adatti alle applicazioni di questo metodo, in quanto le stringhe sono immutabili.

Esempi

Aggiungere elementi a un array

Il seguente codice crea l'array sports che contiene due elementi, poi aggiunge ulteriori due elementi allo stesso. La variabile total contiene la nuova lunghezza dell'array.

var sports = ['calcio', 'baseball'];
var total = sport.push('calcio americano', 'nuoto');

console.log(sports); // ['calcio', 'baseball', 'calcio americano', 'nuoto']
console.log(total); // 4

Unire due arrays

Questo esempio utilizza apply() per aggiungere tutti gli elementi da un secondo array.

Non utilizzare questo metodo se il secondo array (moreVegs in questo esempio) è molto grande, perché il numero massimo di parametri che una funzione può assumere è limitato nella pratica. Vedere apply() per ulteriori dettagli.

var vegetables = ['pastinaca', 'patata'];
var moreVegs = ['sedano', 'barbabietola'];

// Unire il secondo array nel primo
// Equivalente a vegetables.push('sedano', 'barbabietola');
Array.prototype.push.apply(vegetables, moreVegs);

console.log(vegetables); // ['pastinaca', 'patata', 'sedano', 'barbabietola']

Utilizzo di un oggetto come un array

Come accennato in precedenza, push è intenzionalmente generica e possiamo usarla a nostro vantaggio. Array.prototype.push può funzionare benissimo su un oggetto, come mostra questo esempio. Si noti che non creiamo un array per memorizzare la raccolta di oggetti. Al contrario, memorizziamo la raccolta sull'oggetto stesso e utilizziamo call su Array.prototype.push per ingannare il metodo e fargli pensare che siamo di fronte a un array, e funziona solo grazie al modo in cui JavaScript ci permette di stabilire il contesto di esecuzione come preferiamo.

var obj = {
    length: 0,

    addElem: function addElem(elem) {
        // obj.length viene automaticamente incrementato 
        // ogni volta che viene aggiunto un elemento.
        [].push.call(this, elem);
    }
};

// Aggiungiamo alcuni oggetti vuoti solo per illustrare.
obj.addElem({});
obj.addElem({});
console.log(obj.length);
// → 2

Si noti che anche se obj non è un array, il metodo push ha incrementato la proprietà di length diobj come se si trattasse di un array vero e propio.

Specificazioni

Specificazione Stato Commento
ECMAScript 3rd Edition (ECMA-262) Standard Definizione iniziale. Implementato 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  

Compatibilità di Browser

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support1 Yes15.5 Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic support Yes Yes Yes4 Yes Yes Yes

Guarda anche

Tag del documento e collaboratori

 Hanno collaborato alla realizzazione di questa pagina: randomBrainstormer
 Ultima modifica di: randomBrainstormer,