Duplicata possible:
javascript - Array.map et parseInt
J'ai vu cet exemple de comportement JavaScript étrange sur Twitter
['10','10','10','10','10'].map(parseInt)
évalue à
[10, NaN, 2, 3, 4]
quelqu'un pourrait-il expliquer ce comportement? Je l'ai vérifié dans chrome et firebug
['10','10','10','10','10'].map(function(x){return parseInt(x);})
renvoie correctement un tableau de 10 sous forme d'entiers. Est-ce une mauvaise utilisation de map (), un bogue avec parseInt ou autre chose?
parseInt
utilise les deux premiers arguments transmis par la carte et utilise le deuxième argument pour spécifier le radix.
Voici ce qui se passe dans votre code:
parseInt('10', 0) // 10
parseInt('10', 1) // NaN
parseInt('10', 2) // 2
parseInt('10', 3) // 3
parseInt('10', 4) // 4
Voici un lien vers MDN sur parseInt
: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt .
De MDN:
le rappel est invoqué avec trois arguments: la valeur de l'élément, l'index de l'élément et l'objet Array traversé.
parseInt()
prend deux arguments. La valeur et le radix. Cela signifie que la fonction parseInt()
est appelée avec des paramètres involontaires.