我运行以下代码并且javascript返回疯狂的resualt?
代码:
"000000000000000000000000".split('').map(parseInt)
输出:
[0, NaN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
为什么第二项数组是NaN?
答案 0 :(得分:3)
parseInt
actually takes two arguments,第二个是基数; map
将provide three arguments to the called function:当前值,当前索引和整个数组。
这意味着第一项将是parsetInt(0, 0)
,第二项将是parseInt(0, 1)
,依此类推......
你应该强制参数计数:
"000000000000000000000000".split('').map(function(n) { return parseInt(n); })
答案 1 :(得分:2)
map使用三个参数调用该函数。首先是 element,第二个是数组中的索引(第三个是数组 本身)。 parseInt有两个参数。
这里解释清楚:
http://www.quora.com/Exactly-why-does-10-10-10-10-10-map-parseInt-return-10-NaN-2-3-4-in-JavaScript