94 votes

Comportement étrange pour Map, parseInt

Double Possible:
javascript - Tableau.carte et parseInt

J'ai vu cet exemple de l'étrange comportement JavaScript sur twitter

['10','10','10','10','10'].map(parseInt)

donne

[10, NaN, 2, 3, 4]

quelqu'un pourrait expliquer ce comportement? J'ai vérifié dans chrome et firebug

['10','10','10','10','10'].map(function(x){return parseInt(x);})

correctement retourne un tableau de 10 entiers. Est-ce une mauvaise utilisation de la carte(), un bug avec parseInt, ou quelque chose d'autre?

109voto

VisioN Points 62518

parseInt reçoit deux arguments: string et radix:

var intValue = parseInt(string[, radix]);

alors qu' map gestionnaire du second argument est l'index:

... callback n'est appelé avec trois arguments: la valeur de l'élément, l'indice de l'élément, et la Matrice de l'objet en cours de traversée.

36voto

Joseph Silber Points 69582

parseInt utilise les deux premiers arguments transmis par la carte et utilise le second argument pour spécifier la base.

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 .

5voto

Justin Niessner Points 144953

De MDN:

callback est appelé 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 la base. Cela signifie que la fonction parseInt() est appelée avec des paramètres inattendus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X