["1", "2", "3"].map(parseInt)
等价于
[parseInt("1",0),parseInt("2",1),parseInt("3",2)]
parseInt
函数
参数1: 值
参数2: 进制,取值范围2-36,否则为NaN, 为0则默认为10进制。
所以以上输出为
// 第一个十进制1;第二个,不在取值范围,结果为NaN;第三个3不是二进制的值,为NaN
[1, NaN, NaN]
使用柯里化解决该问题
const curry = function(func) {
return function(...arg) {
return func(arg)
}
}
ret = ['1', '2', '3'].map(curry(parseInt))
console.log(ret) // [1,2,3]