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

时间:2016-04-27 22:47:24

标签: javascript

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

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

1 个答案:

答案 0 :(得分:2)

parseInt有两个参数

  

parseInt(string,radix);

map的回调接受三个参数:

  

map(currentValue,index,array)

因此,index的{​​{1}}作为currentValue传递给radix函数。明确使用parseInt基数:

parseInt

或使用var s = "22123222222213123212322123213222"; var a = s.split(""); var b = a.map(e => parseInt(e, 10)); 代替Number

parseInt