Javascript 对数组应用parseInt会产生奇怪的结果

Javascript 对数组应用parseInt会产生奇怪的结果,javascript,Javascript,尝试运行一个简单的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] 为什么索引

尝试运行一个简单的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

在控制台中拨弄:

编辑


在得到下面的正确答案后,我觉得我必须查找这个“地图(编号)”业务。事实证明,Mozilla有一个关于这个具体案例的“gotcha”条款

parseInt有两个参数

parseInt(字符串,基数)

map
的回调函数接受三个参数:

映射(当前值、索引、数组)

因此,
currentValue
索引
作为
基数
传递给
parseInt
函数。使用带基数的
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);

a.map
按顺序将数组的值、索引和数组本身传递给
parseInt
(或者在这个答案的情况下,
Number
)。因此,为什么
基数
需要注意。
.map()
提供了用作
基数
a.map(x=>x | 0)的索引(0,1,2,…)