Wie füge ich ein Objekt (z. B. eine Zeichenfolge oder eine Zahl) an ein Array in JavaScript an?
Antworten
Zu viele Anzeigen?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);
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 .
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;
}
}
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) ;
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.
- See previous answers
- Weitere Antworten anzeigen