为什么 `(['1','2','3']).map(parseInt)` 得不到正确的结果?
Why `(['1','2','3']).map(parseInt)` can't get correct result?
(['1','2','3']).map(n => parseInt(n));
将return期待结果[1,2,3]
但是:
(['1','2','3']).map(parseInt);
returns [1, NaN, NaN]
.
哪里错了?
由于 Array#map
回调有 3 个参数,第二个参数是 index
,这是导致此结果的原因。无论您将什么 function
作为 callback
传递,此参数都会作为该函数的参数传递。
parseInt
的第二个参数是 radix
因此 parseInt('2',1)
和 parseInt('3',2)
是 NaN
执行流程为:
console.log((['1', '2', '3']).map(function(currenValue, index, array) {
return parseInt(currenValue, index, array);
}));
我建议你选择 Number
console.log((['1', '2', '3']).map(Number));
(['1','2','3']).map(n => parseInt(n));
将return期待结果[1,2,3]
但是:
(['1','2','3']).map(parseInt);
returns [1, NaN, NaN]
.
哪里错了?
由于 Array#map
回调有 3 个参数,第二个参数是 index
,这是导致此结果的原因。无论您将什么 function
作为 callback
传递,此参数都会作为该函数的参数传递。
parseInt
的第二个参数是 radix
因此 parseInt('2',1)
和 parseInt('3',2)
是 NaN
执行流程为:
console.log((['1', '2', '3']).map(function(currenValue, index, array) {
return parseInt(currenValue, index, array);
}));
我建议你选择 Number
console.log((['1', '2', '3']).map(Number));