将Array.map()与parseInt结合使用会产生意外结果

时间:2014-09-30 18:38:40

标签: javascript arrays parseint

我有以下JS问题。 如果我尝试使用parseInt函数转换字符串数组作为使用Array.map方法的映射函数,我会遇到这个奇怪的结果。这有什么不对?

console.log(['1','1'].map(parseInt))

返回一个包含以下内容的奇怪数组:

[1, NaN]

parseInt不是常规函数吗?

2 个答案:

答案 0 :(得分:3)

parseInt需要多个参数。 Array.map使用多个参数运行。

为避免副作用,您可以像这样运行:

console.log(['1','1'].map(function(item){
    return parseInt(item);
}))

答案 1 :(得分:1)

是的,parseInt不是常规功能。它需要2个参数。第一个是要解析的数字,第二个是基数。 Array.map传递3 - 值,索引和完整数组。

每次通话都是这样的:

 parseInt('1', 0) // 1
 parseInt('1', 1) // NaN

要解决此问题,您需要手动调用该函数。

console.log(['1','1'].map(function(num){
    return parseInt(num);
}));