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

标签 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]

最佳答案

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

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

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

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

关于javascript - 为什么 arr.map(parseInt) 在 JavaScript 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21469490/

相关文章:

javascript - jQuery 淡入延迟问题

javascript - 使用 javascript 检查 html 表单的结果

c++ - 使用非标准键映射。怎么了?

google-maps - 标记拖动点击事件谷歌地图

javascript - 将 Array.map() 与 parseInt 结合使用会产生意想不到的结果

javascript - Date 对象最兼容的 javascript 时间格式是什么

javascript - 在 Webpack 中从外部文件添加许可证 header

map - 通过多个键使用Clojure更新

javascript - 何时使用 parseInt

java - 读取 number.txt 文件并查找平均值