Maison >interface Web >js tutoriel >Pourquoi « parseInt » renvoie-t-il « NaN » lorsqu'il est utilisé avec « Array#map » ?

Pourquoi « parseInt » renvoie-t-il « NaN » lorsqu'il est utilisé avec « Array#map » ?

DDD
DDDoriginal
2024-12-14 15:02:12664parcourir

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

Pourquoi parseInt renvoie-t-il NaN avec Array#map ?

Le réseau de développeurs Mozilla déclare que [1,4,9].map( Math.sqrt) renvoie [1,2,3]. Cependant, l'application de parseInt au littéral du tableau ['1','2','3'] avec la carte donne [1, NaN, NaN]. Ce comportement se produit dans Firefox 3.0.1 et Chrome 0.3.

La cause profonde

La divergence provient du fait que la fonction de rappel dans map a trois paramètres : la valeur de l'élément, son index et l'objet tableau parcouru. Lorsque parseInt est appelé dans la carte, l'index devient le deuxième argument, qu'il interprète comme la base (la base du système numérique en cours de conversion).

Dans le cas susmentionné, parseInt est appelé avec des valeurs de base de 0. , 1 et 2, respectivement. La base est 10 par défaut pour les entiers sans zéro non significatif. Cependant, la base 1 n'est pas valide et la base 2 ne prend pas en charge le nombre 3. Par conséquent, parseInt renvoie NaN pour les deuxième et troisième éléments.

La solution

Pour Pour remédier à cela, une fonction wrapper peut être utilisée :

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

Alternativement, dans ES2015 :

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

En fournissant explicitement la base 10, nous garantissons que parseInt interprète correctement les chaînes comme des entiers en base 10.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn