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 = sports.push('football americano', 'nuoto'); console.log(sports); // ['calcio', 'baseball', 'football 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. |
Draft |
Compatibilità di Browser
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Basic support | Chrome Full support 1 | Edge Full support Yes | Firefox Full support 1 | IE Full support 5.5 | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Edge Mobile Full support Yes | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes | nodejs Full support Yes |
Legend
- Full support
- Full support