You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中map与parseInt转换数组异常的原因及解决办法

为什么['2023', '12', '0'].map(parseInt)返回[2023, NaN, 0]?

我尝试用map方法结合parseInt函数将字符串数组转换为整数数组时,发现执行['2023', '12', '0'].map(parseInt)返回的结果是[2023, NaN, 0],和预期的整数数组不符。只有改写为['2023', '12', '0'].map(elem => parseInt(elem))才能得到正确结果。

查阅parseInt文档得知它可接受1或2个参数,这正是问题的根源。

核心原因是map方法会向传入的回调函数传递三个参数:当前元素值、元素的数组索引以及数组本身。而parseInt的第二个参数是解析时使用的基数(radix),所以数组的索引被错误地当作了基数参数:

parseInt('2023', 0, ['2023', '12', '0']); // 正常返回2023,基数0会被视为10(因为'2023'符合十进制格式)
parseInt('12', 1, ['2023', '12', '0']); // 返回NaN,1不是合法的基数(合法基数范围是2-36)
parseInt('0', 2, ['2023', '12', '0']); // 正常返回0,以2为基数解析'0'结果就是0

内容的提问来源于stack exchange,提问作者Donghua Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:35:27