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
Libérer: 2024-12-17 11:10:27
original
227 Les gens l'ont consulté

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

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

Vous pouvez également utiliser la syntaxe ES2015 :

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

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal