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
Libérer: 2024-12-14 15:02:12
original
663 Les gens l'ont consulté

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); });
Copier après la connexion

Alternativement, dans ES2015 :

['1','2','3'].map(num => parseInt(num, 10));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal