Heim > Web-Frontend > js-Tutorial > Warum gibt „parseInt' „NaN' zurück, wenn es mit „Array#map' verwendet wird?

Warum gibt „parseInt' „NaN' zurück, wenn es mit „Array#map' verwendet wird?

DDD
Freigeben: 2024-12-14 15:02:12
Original
664 Leute haben es durchsucht

Why Does `parseInt` Return `NaN` When Used with `Array#map`?

Warum gibt parseInt NaN mit Array#map zurück?

Das Mozilla Developer Network gibt an, dass [1,4,9].map( Math.sqrt) gibt [1,2,3] zurück. Die Anwendung von parseInt auf das Array-Literal ['1','2','3'] mit Map ergibt jedoch [1, NaN, NaN]. Dieses Verhalten tritt in Firefox 3.0.1 und Chrome 0.3 auf.

Die Grundursache

Die Diskrepanz ergibt sich aus der Callback-Funktion in Map mit drei Parametern: dem Wert des Elements, sein Index und das durchlaufene Array-Objekt. Wenn parseInt innerhalb von Map aufgerufen wird, wird der Index zum zweiten Argument, das als Basis (die Basis des zu konvertierenden Zahlensystems) interpretiert wird.

Im oben genannten Fall wird parseInt mit Basiswerten von 0 aufgerufen , 1 bzw. 2. Für Ganzzahlen ohne führende Null ist die Basis standardmäßig 10. Allerdings ist Basis 1 ungültig und Basis 2 unterstützt die Zahl 3 nicht. Daher gibt parseInt NaN für das zweite und dritte Element zurück.

Die Lösung

Zu Um dies zu beheben, kann eine Wrapper-Funktion verwendet werden:

['1','2','3'].map(function(num) { return parseInt(num, 10); });
Nach dem Login kopieren

Alternativ in ES2015 :

['1','2','3'].map(num => parseInt(num, 10));
Nach dem Login kopieren

Indem wir die Basis explizit als 10 angeben, stellen wir sicher, dass parseInt die Zeichenfolgen korrekt als Ganzzahlen zur Basis 10 interpretiert.

Das obige ist der detaillierte Inhalt vonWarum gibt „parseInt' „NaN' zurück, wenn es mit „Array#map' verwendet wird?. 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