当map遇到parseInt

[1,4,9].map(Math.sqrt)
// [1, 2, 3]

['1','2','3'].map(parseInt)
//预期 [1, 2, 3]
//结果 [1, NaN, NaN]

回调函数Array.map有3个参数 map (当前正在遍历的元素, 元素索引, 原数组本身)

parseInt 有两个参数 parseInt(元素,进制数)。parseInt把传过来的索引值当成进制数来使用从而返回了NaN

parseInt('1', 0); // OK - gives 1
parseInt('2', 1); // FAIL - 1 isn't a legal radix
parseInt('3', 2); // FAIL - 3 isn't legal in base 2 

可以写进函数:

['1','2','3'].map(function(num) { return parseInt(num, 10); });

或者使用箭头函数:

['1','2','3'].map(num => parseInt(num, 10));
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容