Wie füge ich ein Objekt (z. B. eine Zeichenkette oder eine Zahl) an ein Array in JavaScript an?
Verwenden Sie die Methode Array.prototype.push
, um Werte an ein Array 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 Funktion push()
verwenden, um mehr als einen Wert in 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)
verwenden:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Update
Nur eine Ergänzung zu dieser Antwort, wenn Sie einen beliebigen Wert an den Anfang eines Arrays anhängen wollen, d.h. an den ersten Index, dann können Sie Array.prototype.unshift
für diesen Zweck verwenden.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Es unterstützt auch das Anhängen mehrerer Werte auf einmal, genau wie push
.
Wenn Sie nur eine einzelne Variable anhängen, dann funktioniert push()
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 wirkt sich nicht auf ar1
und ar2
aus, es sei denn, sie wird neu zugewiesen, zum Beispiel:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Viele tolle Infos hier.
Ein kurzes Benchmarking (jeder Test = 500k angehängte Elemente und die Ergebnisse sind Durchschnittswerte aus mehreren Durchläufen) ergab Folgendes:
Firefox 3.6 (Mac):
arr[arr.length] = b
ist schneller (300ms vs. 800ms)arr.push(b)
ist schneller (500ms vs. 900ms)Safari 5.0 (Mac):
arr[arr.length] = b
ist schneller (90ms vs. 115ms)arr[arr.length] = b
ist schneller (160ms vs. 185ms)Google Chrome 6.0 (Mac):
Ich mag die arr.push()
-Syntax besser, aber ich denke, ich wäre mit der arr[arr.length]
-Version besser dran, zumindest was die Geschwindigkeit angeht. 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;
}
}