Vraag Hoe iets aan een array toevoegen?


Hoe voeg ik een object (zoals een tekenreeks of een nummer) toe aan een array in JavaScript?


2872


oorsprong


antwoorden:


Gebruik de push() functie om aan een array toe te voegen:

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

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

console.log(arr);

Wordt afgedrukt

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

U kunt de push() functie om meer dan één waarde toe te voegen aan een array in een enkele oproep:

// 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]);
}

Wordt afgedrukt

Hi
Hello
Bonjour
Hola 
Salut
Hey

Bijwerken

Als u de items van een array aan een andere array wilt toevoegen, kunt u gebruiken firstArray.concat(secondArray):

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

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

console.log(arr);

Wordt afgedrukt

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

3378



Als u slechts een enkele variabele toevoegt, dan push() werkt prima. Gebruik als u een andere array moet toevoegen concat():

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

var ar3 = ar1.concat(ar2);

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

Zal uitspugen:

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

De concat heeft geen invloed op ar1 en ar2 tenzij opnieuw toegewezen, bijvoorbeeld:

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

Zal weergeven:

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

Veel geweldige info hier


954



Enkele snelle benchmarking (elke test = 500k toegevoegde elementen en de resultaten zijn gemiddelden van meerdere runs) toonde het volgende:

Firefox 3.6 (Mac):

  • Kleine arrays: arr[arr.length] = b is sneller (300ms versus 800ms)
  • Grote matrices: arr.push(b) is sneller (500 ms versus 900ms)

Safari 5.0 (Mac):

  • Kleine arrays: arr[arr.length] = b is sneller (90ms versus 115ms)
  • Grote matrices: arr[arr.length] = b is sneller (160ms vs. 185ms)

Google Chrome 6.0 (Mac):

  • Kleine arrays: Geen significant verschil (en Chrome is FAST! Only ~ 38ms !!)
  • Grote matrices: Geen significant verschil (160ms)

ik vind de leuk arr.push() syntaxis beter, maar ik denk dat ik beter af zou zijn met de arr[arr.length] Versie, althans in onbewerkte snelheid. Ik zou echter graag de resultaten van een IE-run zien.


Mijn benchmarking-loops:

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



Ik denk dat het de moeite waard is te vermelden dat push kan worden aangeroepen met meerdere argumenten, die in volgorde aan de array worden toegevoegd. Bijvoorbeeld:

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

Als gevolg hiervan kun je push.apply gebruiken om een ​​array aan een andere array toe te voegen, zoals:

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

Geannoteerde ES5 heeft meer informatie over wat precies Duwen en van toepassing zijn do.

2016 update: met verspreiding, dat heb je niet nodig apply meer, zoals:

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

259



Je kunt gebruiken push en apply functie om twee arrays toe te voegen.

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

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

Het zal toevoegen array2 naar array1. Nu array1 bevat [11, 32, 75, 99, 67, 34]. Deze code is veel eenvoudiger dan schrijven for Loops om alle items in de array te kopiëren.


64



Gebruik concat:

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

a bevat nu alle elementen, [1, 2, 3, 3, 4, 5].

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


35



Als arr is een array, en val is de waarde die u wenst toe te voegen:

arr.push(val);

Bijv.

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

zal loggen:

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

34