Heim >Web-Frontend >js-Tutorial >Warum verhält sich „new Array(count)' bei Verwendung von „map()' anders als Array-Literale?

Warum verhält sich „new Array(count)' bei Verwendung von „map()' anders als Array-Literale?

DDD
DDDOriginal
2024-12-13 11:53:13242Durchsuche

Why Does `new Array(count)` Behave Differently from Array Literals When Using `map()`?

Warum wirkt sich die Array-Erstellung auf die Array-Transformation aus?

In bestimmten Umgebungen zeigt das Erstellen eines Arrays mit „new Array(count)“ ein unerwartetes Verhalten die Kartenmethode. Im Gegensatz zu Arrays, die mit literaler Syntax erstellt wurden (z. B. [undefiniert, undefiniert, undefiniert]), transformieren Arrays, die über new Array(3) erstellt wurden, ihre Elemente mithilfe von Map nicht korrekt.

Dieses Verhalten wird einem nicht gefüllten Array zugeschrieben. Beim Erstellen eines Arrays mit new Array(count) bleiben die Elemente des resultierenden Arrays undefiniert. Dies unterscheidet sich von Arrays, die mit der Literal-Syntax erstellt wurden und Elemente automatisch mit undefiniert initialisieren.

Um dieses Problem zu umgehen und sicherzustellen, dass die Karte ordnungsgemäß funktioniert, wird empfohlen, die Array-Elemente mit einem beliebigen Wert zu füllen, z. B. undefiniert , bevor Sie die Transformation versuchen. Zu diesem Zweck kann die Methode Array.prototype.fill() verwendet werden.

Um beispielsweise ein Array der ersten 10 Ganzzahlen mit new Array(count) und map zu erstellen:

let arr = new Array(10).fill(undefined).map((val, idx) => idx);

Dies führt zur gewünschten Ausgabe:

[0,1,2,3,4,5,6,7,8,9]

Das obige ist der detaillierte Inhalt vonWarum verhält sich „new Array(count)' bei Verwendung von „map()' anders als Array-Literale?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn