Heim > Web-Frontend > js-Tutorial > Warum gibt „['1', '2', '3'].map(parseInt)' in JavaScript „[1, NaN, NaN]' zurück?

Warum gibt „['1', '2', '3'].map(parseInt)' in JavaScript „[1, NaN, NaN]' zurück?

Barbara Streisand
Freigeben: 2024-12-27 21:00:19
Original
185 Leute haben es durchsucht

Why Does `['1', '2', '3'].map(parseInt)` Return `[1, NaN, NaN]` in JavaScript?

Verarbeitung von Radix in Array#map parseInt-Aufrufen

Im Kontext von JavaScript-Arrays transformiert die Map-Methode jedes Element mithilfe einer bereitgestellten Rückruffunktion . Während Map Math.sqrt erfolgreich auf Zahlen anwenden kann, kann sein Verhalten mit parseInt auf Strings verwirrend sein.

Man könnte erwarten, dass ['1', '2', '3'].map(parseInt) zurückgegeben wird [1, 2, 3]. Tatsächlich ergibt es jedoch [1, NaN, NaN]. Diese Kuriosität ergibt sich aus dem Radix-Parameter von parseInt.

Die Rolle von Radix in parseInt

parseInt erwartet zwei Argumente: den umzuwandelnden Wert und die Basis. Wenn die Basis weggelassen wird, wird die „beste Schätzung“ basierend auf der Eingabe verwendet.

Im Fall von ['1', '2', '3'].map(parseInt) wird die Basis der Index jedes Elements während der Array-Iteration. Daher wird am Ende Folgendes aufgerufen:

parseInt('1', 0); // Correct (radix defaults to 10)
parseInt('2', 1); // Invalid radix (not a number base)
parseInt('3', 2); // Invalid number in base 2
Nach dem Login kopieren

Das Problem lösen

Um dieses Problem zu lösen und das gewünschte Ergebnis zu erhalten [1, 2, 3], können Sie Folgendes tun Verwenden Sie eine Wrapper-Funktion wie diese:

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

oder mit ES2015 Syntax:

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

Hier wird die Basis explizit auf 10 gesetzt, um eine korrekte Analyse sicherzustellen.

Das obige ist der detaillierte Inhalt vonWarum gibt „['1', '2', '3'].map(parseInt)' in JavaScript „[1, NaN, NaN]' zurück?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage