Domanda Come aggiungere qualcosa a un array?


Come appendo un oggetto (come una stringa o un numero) a un array in JavaScript?


2870


origine


risposte:


Usa il push() funzione da aggiungere a un array:

// initialize array
var arr = [
    "Hi",
    "Hello",
    "Bonjour"
];

// append new value to the array
arr.push("Hola");

console.log(arr);

Stamperà

["Hi", "Hello", "Bonjour", "Hola"]

Puoi usare il push() funzione per aggiungere più di un valore a 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]);
}

Stamperà

Hi
Hello
Bonjour
Hola 
Salut
Hey

Aggiornare

Se si desidera aggiungere gli elementi di una matrice a un'altra matrice, è possibile utilizzare firstArray.concat(secondArray):

var arr = [
    "apple",
    "banana",
    "cherry"
];

arr = arr.concat([
    "dragonfruit",
    "elderberry",
    "fig"
]);

console.log(arr);

Stamperà

["apple", "banana", "cherry", "dragonfruit", "elderberry", "fig"]

3375



Se stai aggiungendo solo una singola variabile, allora push() funziona bene Se è necessario aggiungere un altro array, utilizzare concat():

var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];

var ar3 = ar1.concat(ar2);

alert(ar1);
alert(ar2);
alert(ar3);

Sputerà:

"1,2,3"
"4,5,6"
"1,2,3,4,5,6"

Il concat non ha effetto ar1 e ar2 a meno che non sia stato riassegnato, ad esempio:

ar1 = ar1.concat(ar2);
alert(ar1);

Mostrerà:

"1,2,3,4,5,6"

Un sacco di grandi informazioni Qui


954



Alcuni rapidi benchmark (ogni test = 500k di elementi aggiunti e i risultati sono una media di più esecuzioni) hanno mostrato quanto segue:

Firefox 3.6 (Mac):

  • Piccoli array: arr[arr.length] = b è più veloce (300 ms vs. 800 ms)
  • Grandi matrici: arr.push(b) è più veloce (500 ms vs. 900 ms)

Safari 5.0 (Mac):

  • Piccoli array: arr[arr.length] = b è più veloce (90 ms contro 115 ms)
  • Grandi matrici: arr[arr.length] = b è più veloce (160 ms vs. 185 ms)

Google Chrome 6.0 (Mac):

  • Piccoli array: Nessuna differenza significativa (e Chrome è VELOCE! Solo ~ 38ms !!)
  • Grandi matrici: Nessuna differenza significativa (160ms)

mi piace il arr.push() sintassi meglio, ma penso che starei meglio con il arr[arr.length] Versione, almeno in velocità raw. Mi piacerebbe vedere i risultati di una corsa IE però.


I miei loop 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;
    }
}

369



Penso che valga la pena ricordare che push può essere chiamato con più argomenti, che verranno aggiunti all'array in ordine. Per esempio:

var arr = ['first'];
arr.push('second', 'third');
console.log(arr); // ['first', 'second', 'third']

Come risultato di ciò è possibile utilizzare push.apply per aggiungere una matrice a un altro array in questo modo:

arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr); // ['first', 'second', 'third', 'forth', 'fifth']

Annotato ES5 ha più informazioni su esattamente cosa spingere e applicare fare.

Aggiornamento 2016: con diffusione, non ne hai bisogno apply più, come:

arr.push(...['fourth', 'fifth']);
console.log(arr) // ['first', 'second', 'third', 'fourth', 'fifth']

259



Puoi usare push e apply funzione per aggiungere due array.

var array1 = [11, 32, 75];
var array2 = [99, 67, 34];

Array.prototype.push.apply(array1, array2);

Aggiungerà array2 a array1. Adesso array1 contiene [11, 32, 75, 99, 67, 34]. Questo codice è molto più semplice della scrittura for loop per copiare ogni singolo elemento dell'array.


64



Uso concat:

a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);

a ora contiene tutti gli elementi, [1, 2, 3, 3, 4, 5].

Riferimento: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat


35



Se arr è un array, e val è il valore che desideri aggiungere:

arr.push(val);

Per esempio.

arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);

registrerà:

['a', 'b', 'c', 'd']

34



Con il nuovo ES6 operatore di spread, unendo due matrici usando push diventa ancora più facile:

var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

Questo aggiunge il contenuto di arr2 alla fine di arr.

Babel REPL Esempio


33