Christian S: Verhalten bei Füllen von leerem Array

Beitrag lesen

Mahlzeit,

Ich möchte ein Array mit einer vorgegebenen Anzahl an Indices (je nachdem, wie viele Elemente einer gewissen Klasse ich im DOM habe) kreieren und diese dann füllen. Dabei bin ich auf ein Verhalten von Javascript gestoßen, das für mich keinen Sinn ergibt...

Und zwar lässt sich das Array nur füllen, wenn ich es zusätzlich in ein weiteres Array spreade. Warum?

let zuFuellendeAnzahl = 3; // eigentlich *classes*.length, hier der Einfachheit halber 3.

let arr1 = new Array(zuFuellendeAnzahl);
arr1.forEach((leer, index) => {
	arr1[index] = "Werte für Arr1";
});
console.log("arr1: ", arr1); // 👎 // WARUM arr1: [EMPTY x 3] ?

let arr2 = [...arr1];
arr2.forEach((leer, index) => {
	arr2[index] = "Werte für Arr2";
});
console.log("arr2: ", arr2); // 👍 // arr2: ["Werte für Arr2", "Werte für Arr2", "Werte für Arr2"]

var arr3 = Array.apply(null, Array(zuFuellendeAnzahl));
arr3.forEach(function(el, index) {
    arr3[index] = "Werte für Arr3";
});
console.log("arr2: ", arr3); // 👍 // arr3: ["Werte für Arr3", "Werte für Arr3", "Werte für Arr3"]

Feinste Grüße, Christian.