2890 Stimmen

Wie kann man etwas an ein Array anhängen?

Wie füge ich ein Objekt (z. B. eine Zeichenfolge oder eine Zahl) an ein Array in JavaScript an?

5330voto

jdecuyper Punkte 3906

Verwenden Sie die Array.prototype.push Methode, um Werte an das Ende eines Arrays anzuhängen:

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

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

console.log(arr);

Sie können die push() Funktion, um mehr als einen Wert mit einem einzigen Aufruf an ein Array anzuhängen:

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

Update

Wenn Sie die Elemente eines Arrays zu einem anderen Array hinzufügen möchten, können Sie firstArray.concat(secondArray) :

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

// Do not forget to assign the result as, unlike push, concat does not change the existing array
arr = arr.concat([
  "dragonfruit",
  "elderberry",
  "fig"
]);

console.log(arr);

Update

Nur ein Zusatz zu dieser Antwort, wenn Sie einen beliebigen Wert an den Anfang eines Arrays (d.h. den ersten Index) voranstellen wollen, dann können Sie verwenden Array.prototype.unshift zu diesem Zweck.

var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);

Sie unterstützt auch das Anhängen mehrerer Werte auf einmal, genau wie push .


Update

Ein anderer Weg mit ES6 Syntax ist die Rückgabe eines neuen Arrays mit der _Verbreitungssyntax_ . Dies lässt das ursprüngliche Array unverändert, gibt aber ein neues Array mit neuen Elementen zurück, was dem Geist der funktionalen Programmierung entspricht.

const arr = [
  "Hi",
  "Hello",
  "Bonjour",
];

const newArr = [
  ...arr,
  "Salut",
];

console.log(newArr);

1117voto

MK_Dev Punkte 3271

Wenn Sie nur eine einzelne Variable anhängen, dann push() funktioniert einwandfrei. Wenn Sie ein weiteres Array anhängen müssen, verwenden Sie concat() :

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

var ar3 = ar1.concat(ar2);

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

Die Verknüpfung hat keine Auswirkungen auf ar1 y ar2 es sei denn, sie werden neu zugewiesen, zum Beispiel:

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

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

Es gibt eine Menge guter Informationen auf JavaScript-Referenz .

427voto

Jens Roland Punkte 26963

Ein kurzes Benchmarking (jeder Test = 500k angehängte Elemente und die Ergebnisse sind Durchschnittswerte aus mehreren Durchläufen) ergab Folgendes:

Firefox 3.6 (Mac):

  • Kleine Arrays: arr[arr.length] = b ist schneller (300ms vs. 800ms)
  • Große Arrays: arr.push(b) ist schneller (500ms vs. 900ms)

Safari 5.0 (Mac):

  • Kleine Arrays: arr[arr.length] = b ist schneller (90ms vs. 115ms)
  • Große Arrays: arr[arr.length] = b ist schneller (160ms vs. 185ms)

Google Chrome 6.0 (Mac):

  • Kleine Arrays: Kein signifikanter Unterschied (und Chrome ist SCHNELL! Nur ~38ms !!)
  • Große Arrays: Kein signifikanter Unterschied (160ms)

Ich mag die arr.push() Syntax besser, aber ich denke, ich wäre besser dran mit der arr[arr.length] Version, zumindest in der Rohgeschwindigkeit. Ich würde aber gerne die Ergebnisse eines IE-Laufs sehen.


Meine Benchmarking-Schleifen:

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;
    }
}

341voto

Omnimike Punkte 1255

Ich denke, es ist erwähnenswert, dass push mit mehreren Argumenten aufgerufen werden kann, die dann der Reihe nach an das Array angehängt werden. Zum Beispiel:

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

Infolgedessen können Sie push.apply verwenden, um ein Array an ein anderes Array anzuhängen, etwa so:

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

ES5 mit Anmerkungen hat mehr Informationen darüber, was genau drücken. y anwenden. tun.

Update 2016: mit Verbreitung Das brauchen Sie nicht. apply mehr, wie:

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

arr.push(...['fourth', 'fifth']);
console.log(arr) ;

86voto

Fizer Khan Punkte 79079

Sie können die push y apply Funktionen, um zwei Arrays anzuhängen.

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

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

Es wird angehängt array2 a array1 . Jetzt array1 enthält [11, 32, 75, 99, 67, 34] . Dieser Code ist viel einfacher als das Schreiben von for Schleifen, um jedes einzelne Element im Array zu kopieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X