Maison >interface Web >js tutoriel >Pourquoi `Array.map()` avec `parseInt()` produit-il des résultats inattendus en JavaScript ?
Analyse des nombres dans Array.map() avec parseInt
En Javascript, la fonction Array.map() applique une fonction de rappel à chacun élément d'un tableau. Cependant, la fonction parseInt(), lorsqu'elle est utilisée dans ce contexte, peut donner des résultats inattendus.
Dans l'exemple fourni :
['1','2','3'].map(parseInt);
parseInt() donne [1, NaN, NaN] au lieu du [1, 2, 3] attendu. Ce comportement est dû au fait que parseInt() prend deux arguments : la chaîne à analyser et une base facultative (base).
La fonction de rappel Array.map() fournit trois paramètres : la valeur de l'élément, son index et le tableau lui-même. Lors de l'utilisation de parseInt() sans spécifier de base, il utilise le deuxième paramètre (l'index) comme base.
Pour ['1','2','3'], les valeurs de base utilisées par parseInt () deviennent 0, 1 et 2. Puisque la base 1 n'est pas valide et que 3 n'est pas représentable en binaire (base 2), l'analyse échoue, ce qui entraîne NaN.
Pour corriger ce comportement, fournissez une base explicite à parseInt() dans une fonction wrapper :
['1','2','3'].map(function(num) { return parseInt(num, 10); });
Vous pouvez également utiliser la syntaxe ES2015 :
['1','2','3'].map(num => parseInt(num, 10));
En spécifiant une base de 10, nous nous assurons que parseInt() analyse correctement les chaînes dans nombres entiers.
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!