在数组上应用 parseInt 会产生奇怪的结果

Applying parseInt on array yields weird result

本文关键字:结果 数组 应用 parseInt      更新时间:2023-09-26

尝试运行一个简单的javascript来解析字符串中的个位数整数,如下所示:

var s = "22123222222213123212322123213222";
var a = s.split("");
var b = a.map(parseInt);
console.log(b);
[2, NaN, 1, 2, 3, 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, 2, 3, 2, 1, 2, 3, 2, 2, 1, 2, 3, 2, 1, 3, 2, 2, 2]

为什么索引为 1 的元素有 NaN?

在这里摆弄控制台:https://jsfiddle.net/po6oy1ws/

编辑

在得到下面的正确答案后,我觉得我必须查找这个"地图(数字)"业务。事实证明,Mozilla对这个特定案例有一个"陷阱"条款。Mozilla gotcha case

parseInt有两个参数

parseInt(string, radix);

map 的回调接受三个参数:

map(currentValue, index, array)

因此,currentValueindex作为parseInt函数的radix传递。显式使用基数parseInt

var s = "22123222222213123212322123213222";
var a = s.split("");
var b = a.map(e => parseInt(e, 10));

或者使用 Number 代替 parseInt

var s = "22123222222213123212322123213222";
var a = s.split("");
var b = a.map(Number);