Come posso aggiungere un oggetto (come una stringa o un numero) a un array in JavaScript?
Usare il metodo Array.prototype.push
per aggiungere valori a un array:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
Potete usare la funzione push()
per aggiungere più di un valore ad un array in una singola chiamata:
// initialize array
var arr = ["Hi", "Hello", "Bonjour", "Hola"];
// append multiple values to the array
arr.push("Salut", "Hey");
// display all values
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
Aggiornamento
Se volete aggiungere gli elementi di un array ad un altro array, potete usare primoArray.concat(secondoArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Aggiornamento
Solo un'aggiunta a questa risposta, se vuoi aggiungere qualsiasi valore all'inizio di un array, cioè al primo indice, allora puoi usare Array.prototype.unshift
per questo scopo.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Supporta anche l'aggiunta di più valori in una volta sola, proprio come push
.
Se state aggiungendo solo una singola variabile, allora push()
funziona bene. Se avete bisogno di aggiungere un altro array, usate concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
Il concat non influisce su ar1
e ar2
a meno che non venga riassegnato, per esempio:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Un sacco di grandi informazioni qui.
Qualche rapido benchmarking (ogni test = 500k elementi aggiunti e i risultati sono medie di più esecuzioni) ha mostrato quanto segue:
Firefox 3.6 (Mac):
arr[arr.length] = b
è più veloce (300ms vs. 800ms)arr.push(b)
è più veloce (500ms vs. 900ms)Safari 5.0 (Mac):
arr[arr.length] = b
è più veloce (90ms vs. 115ms)arr[arr.length] = b
è più veloce (160ms vs. 185ms)Google Chrome 6.0 (Mac):
Mi piace di più la sintassi arr.push()
, ma penso che starei meglio con la versione arr[arr.length]
, almeno nella velocità grezza. Mi piacerebbe vedere i risultati di un'esecuzione su IE.
I miei cicli di benchmarking:
function arrpush_small() {
var arr1 = [];
for (a = 0; a < 100; a++)
{
arr1 = [];
for (i = 0; i < 5000; i++)
{
arr1.push('elem' + i);
}
}
}
function arrlen_small() {
var arr2 = [];
for (b = 0; b < 100; b++)
{
arr2 = [];
for (j = 0; j < 5000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
}
function arrpush_large() {
var arr1 = [];
for (i = 0; i < 500000; i++)
{
arr1.push('elem' + i);
}
}
function arrlen_large() {
var arr2 = [];
for (j = 0; j < 500000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}