La fonction de rappel dans Array.mapa trois paramètres:
À partir de la même page Mozilla que vous avez liée à:
le rappel est invoqué avec trois arguments: la valeur de l'élément, l'index de l'élément et l'objet Array traversé. "
Donc, si vous appelez une fonction parseIntqui attend réellement deux arguments, le deuxième argument sera l'index de l'élément.
Dans ce cas, vous avez fini par appeler parseIntavec les radix 0, 1 et 2 tour à tour. Le premier est le même que ne fournissant pas le paramètre, il a donc par défaut basé sur l'entrée (base 10, dans ce cas). La base 1 est une base numérique impossible et 3 n'est pas un nombre valide dans la base 2:
parseInt('1', 0); // OK - gives 1
parseInt('2', 1); // FAIL - 1 isn't a legal radix
parseInt('3', 2); // FAIL - 3 isn't legal in base 2
Donc, dans ce cas, vous avez besoin de la fonction wrapper:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
ou avec la syntaxe ES2015 +:
['1','2','3'].map(num => parseInt(num, 10));
(Dans les deux cas, il est préférable de fournir explicitement un radix parseIntcomme indiqué, sinon il devine le radix en fonction de l'entrée. Dans certains navigateurs plus anciens, un 0 de tête le faisait deviner octal, ce qui tendait à être problématique. Il sera toujours devinez hex si la chaîne commence par 0x.)
.map(parseFloat)car il ne prend qu'un seul paramètre.