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
Freigeben: 2024-12-13 11:53:13
Original
136 Leute haben es durchsucht

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);
Nach dem Login kopieren

Dies führt zur gewünschten Ausgabe:

[0,1,2,3,4,5,6,7,8,9]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage