--- title: Array.prototype.push() slug: Web/JavaScript/Reference/Global_Objects/Array/push translation_of: Web/JavaScript/Reference/Global_Objects/Array/push ---
{{JSRef}}

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à {{jsxref("Array.length", "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 {{jsxref("Function.call", "call()")}} o {{jsxref("Function.apply", "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 oggetti nativi simili agli array sono {{jsxref("Global_Objects/String", "strings", "", 1)}}, 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 {{jsxref("Function.apply", "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 {{jsxref("Function.apply", "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 proprio.

Specificazioni

Specificazione Stato Commento
{{SpecName('ES3')}} {{Spec2('ES3')}} Definizione iniziale. Implementato in JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.7', 'Array.prototype.push')}} {{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.push', 'Array.prototype.push')}} {{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}} {{Spec2('ESDraft')}}

Compatibilità di Browser

{{Compat("javascript.builtins.Array.push")}}

Guarda anche