Website-Suche

Ein Array an ein anderes Array in JavaScript anhängen


Diese Frage ist ein exaktes Duplikat von:
Wie fügt man ein Array zu einem bestehenden JavaScript-Array hinzu?

Wie fügt man in JavaScript ein Array einem anderen Array hinzu?

Andere Möglichkeiten, wie eine Person diese Frage formulieren könnte:

  • Ein Array zu einem anderen hinzufügen
  • Verketten/Arrays verketten
  • Ein Array mit einem anderen Array erweitern
  • Die Inhalte eines Arrays in ein anderes Array legen

Ich habe einige Zeit damit verbracht, die Antwort auf diese Frage zu suchen. Manchmal sind die einfachsten Fragen wie diese die schwersten, eine Antwort zu finden, daher füge ich die Frage hier hinzu, hoffentlich mit vielen Schlüsselwörtern und Ausdrücken, wie in diesem Blogartikel beschrieben. Bitte zögern Sie nicht, diese Frage mit anderen hilfreichen Informationen zu beantworten oder die unten stehenden Schlüsselwörter und Ausdrücke zu bearbeiten.

Antwort #1

Wenn Sie das ursprüngliche Array ändern möchten, anstatt ein neues Array zurückzugeben, verwenden Sie .push()...

array1.push.apply(array1, array2);
array1.push.apply(array1, array3);

Ich habe .apply verwendet, um die einzelnen Elemente der Arrays 2 und 3 auf einmal zu pushen.

oder...

array1.push.apply(array1, array2.concat(array3));

Um mit großen Arrays umzugehen, können Sie dies in Chargen tun.

for (var n = 0, to_add = array2.concat(array3); n < to_add.length; n+=300) {
    array1.push.apply(array1, to_add.slice(n, n+300));
}

Wenn Sie dies oft tun, erstellen Sie eine Methode oder Funktion, um es zu handhaben.

var push_apply = Function.apply.bind([].push);
var slice_call = Function.call.bind([].slice);

Object.defineProperty(Array.prototype, "pushArrayMembers", {
    value: function() {
        for (var i = 0; i < arguments.length; i++) {
            var to_add = arguments[i];
            for (var n = 0; n < to_add.length; n+=300) {
                push_apply(this, slice_call(to_add, n, n+300));
            }
        }
    }
});

und benutze es so:

array1.pushArrayMembers(array2, array3);

var push_apply = Function.apply.bind([].push);
var slice_call = Function.call.bind([].slice);

Object.defineProperty(Array.prototype, "pushArrayMembers", {
    value: function() {
        for (var i = 0; i < arguments.length; i++) {
            var to_add = arguments[i];
            for (var n = 0; n < to_add.length; n+=300) {
                push_apply(this, slice_call(to_add, n, n+300));
            }
        }
    }
});

var array1 = ['a','b','c'];
var array2 = ['d','e','f'];
var array3 = ['g','h','i'];

array1.pushArrayMembers(array2, array3);

document.body.textContent = JSON.stringify(array1, null, 4);

Verwandte Artikel