为什么`(['1','2','3'])。map(parseInt)`无法得到正确的结果?

时间:2016-07-30 07:20:50

标签: javascript mapping

(['1','2','3']).map(n => parseInt(n));

将返回预期结果[1,2,3]

但是:

(['1','2','3']).map(parseInt);

返回[1, NaN, NaN]

哪里错了?

1 个答案:

答案 0 :(得分:2)

由于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));