为什么 `(['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));