504 Stimmen

Mehrere Elemente in ein Array einfügen

Ich versuche, mehrere Elemente als ein Array zu schieben, bekomme aber einen Fehler:

> a = []
[]
> a.push.apply(null, [1,2])
TypeError: Array.prototype.push called on null or undefined

Ich versuche, ähnliche Dinge zu tun, wie ich es in Ruby tun würde, ich dachte, dass apply so etwas wie * ist.

>> a = []
=> []
>> a.push(*[1,2])
=> [1, 2]

0 Stimmen

Dein Beispiel war fast korrekt, es musste nur a anstelle von null platziert werden, wie hier: a.push.apply(a, [1,2])

29voto

John Punkte 6674

Wenn Sie eine Alternative zu Array.concat in ECMAScript 2015 (auch bekannt als ES6, ES2015) möchten, die genauso wie es das Array nicht modifiziert, sondern ein neues Array zurückgibt, können Sie den Spread Operator verwenden, wie folgt:

var arr = [1];
var newItems = [2, 3];
var newerItems = [4, 5];
var newArr = [...arr, ...newItems, ...newerItems];
console.log(newArr);

Beachten Sie, dass dies sich vom push-Befehl unterscheidet, da der push-Befehl das Array verändert.

Wenn Sie herausfinden möchten, ob bestimmte ES2015-Funktionen in Ihrem Browser funktionieren, schauen Sie sich Kangax's Kompatibilitätstabelle an.

Sie können auch Babel oder einen ähnlichen Transpiler verwenden, wenn Sie nicht auf die Unterstützung durch den Browser warten möchten und ES2015 in der Produktion einsetzen möchten.

4voto

MD SHAYON Punkte 6992

Einfacherer Weg ist

a = []
a.push(1,2,3)

Ein anderer Weg ist

a = [...a, 4,5,6]

wenn Sie ein weiteres Array erstellen möchten

const b = a.concat(7,8,9)

2 Stimmen

Leichter als was? Dies sind die genauen Ansätze, die in dieser 10 Jahre alten Antwort und dieser 7 Jahre alten Antwort gegeben sind.

4voto

Jose Velasco Punkte 153

Ich hatte den gleichen Zweifel und in meinem Fall hat eine einfachere Lösung für mich funktioniert:

let array = []
array.push(1, 2, 4, "string", new Object())
console.log(array)
// logs [ 1, 2, 4, 'string', {} ]

0 Stimmen

Einfacher als was? Dies ist der genaue Ansatz, der in dieser 10 Jahre alten Antwort gegeben wird.

0 Stimmen

Gibt es Punkte dafür, dass Sie denselben Kommentar immer wieder kopieren? Ich versuche beizutragen, andere...

0voto

R15 Punkte 10538

Das Drücken mehrerer Objekte auf einmal hängt oft davon ab, wie Sie Ihr array deklarieren.

So habe ich es gemacht

//Deklaration
productList = [] as any;

jetzt push Aufzeichnungen

this.productList.push(obj.length, obj2.length, items);

2 Stimmen

"Typ-Überprüfungsausdrücke können nur in TypeScript-Dateien verwendet werden." ist das, was VS Code über das Schlüsselwort any hier gesagt hat

0voto

Mohamed Anas Punkte 157

Stellen Sie sich vor, Sie haben ein Array der ersten zehn Zahlen, aber eine Zahl fehlt, sagen wir 6. Sie können es in das Array am Index 5 mit folgendem Code einfügen

function insert(array, index, obj) {
  return [...array.slice(0,index), obj, ...array.slice(index)]
}

let arr = [1,2,3,4,5,7,8,9,0]
arr = insert(arr, 5, 6)
console.log(arr)

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