Zahlen in Array.map() mit parseInt analysieren
In Javascript wendet die Funktion Array.map() auf jede eine Rückruffunktion an Element eines Arrays. Allerdings kann die Funktion parseInt() in diesem Zusammenhang zu unerwarteten Ergebnissen führen.
Im bereitgestellten Beispiel:
['1','2','3'].map(parseInt);
parseInt() ergibt [1, NaN, NaN] statt der erwarteten [1, 2, 3]. Dieses Verhalten entsteht, weil parseInt() zwei Argumente benötigt: die zu analysierende Zeichenfolge und eine optionale Basis (Basis).
Die Rückruffunktion Array.map() stellt drei Parameter bereit: den Elementwert, seinen Index und den Array selbst. Wenn parseInt() ohne Angabe einer Basis verwendet wird, wird der zweite Parameter (der Index) als Basis verwendet.
Für ['1','2','3'] die von parseInt verwendeten Basiswerte () werden zu 0, 1 und 2. Da Basis 1 ungültig ist und 3 nicht binär darstellbar ist (Basis 2), schlägt die Analyse fehl, was dazu führt NaN.
Um dieses Verhalten zu korrigieren, geben Sie eine explizite Basis für parseInt() innerhalb einer Wrapper-Funktion an:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
Alternativ können Sie die ES2015-Syntax verwenden:
['1','2','3'].map(num => parseInt(num, 10));
Durch die Angabe einer Basis von 10 stellen wir sicher, dass parseInt() die Zeichenfolgen korrekt analysiert ganze Zahlen.
Das obige ist der detaillierte Inhalt vonWarum führt „Array.map()' mit „parseInt()' zu unerwarteten Ergebnissen in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!