Maison >interface Web >js tutoriel >Pourquoi `Array.map()` avec `parseInt()` produit-il des résultats inattendus en JavaScript ?

Pourquoi `Array.map()` avec `parseInt()` produit-il des résultats inattendus en JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-17 11:10:27151parcourir

Why Does `Array.map()` with `parseInt()` Produce Unexpected Results in 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!

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