为什么arr.map(parseInt)在JavaScript中不起作用?

时间:2014-01-30 23:16:00

标签: javascript map parseint

我觉得我正在做一些无聊的事情。任何人都可以帮助我理解为什么以下不起作用

["1.1", "2.2", "3.3"].map(parseInt);
//=> [1, NaN, NaN]

这虽然有效但

["1.1", "2.2", "3.3"].map(function(num) {
  return parseInt(num);
});
//=> [1, 2, 3]

这似乎也有效

["1.1", "2.2", "3.3"].map(Number);
//=> [1.1, 2.2, 3.3]

1 个答案:

答案 0 :(得分:6)

Array.prototype.map将多个参数传递给回调。特别是它传递的第二个参数是正在处理的元素的索引。

parseInt接受多个参数。特别是它接受的第二个参数是您要转换的数字系统的基础。

处理完第二个元素后,您正在调用parseInt("2.2", 1),由于2不是基数1中的有效数字,因此结果为NaN

如果你在parseInt周围声明一个“包装”回调,那么这些额外的参数会丢失,一切似乎都能正常工作,尽管you should always pass the second argument to parseInt