我有以下JS问题。 如果我尝试使用parseInt函数转换字符串数组作为使用Array.map方法的映射函数,我会遇到这个奇怪的结果。这有什么不对?
console.log(['1','1'].map(parseInt))
返回一个包含以下内容的奇怪数组:
[1, NaN]
parseInt不是常规函数吗?
答案 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);
}));