利用 map 快速将字符串转换为数字

文章解释了在JavaScript中使用`map()`方法时,用`Number`和`parseInt`作为回调函数的区别。当用`parseInt`时,由于忽略了第二个参数`radix`,导致意外的结果。例如,`parseInt(2,1)`返回`NaN`,因为没有一进制。而`Number`函数只接受一个参数,避免了这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:

当使用Number

let arr = ['1', '2', '3'];
let r = arr.map(Number);
console.log(r); // 1,2,3

改用parseInt的结果却出人意料:

let arr = ['1', '2', '3'];
let r = arr.map(parseInt);
console.log(r); // 1,NaN,NaN

原因

由于map()接收的回调函数可以有3个参数:callback(currentValue, index, array),通常我们仅需要第一个参数,而忽略了传入的后面两个参数。但是parseInt(string, radix)没有忽略第二个参数,导致实际执行的函数分别是:

parseInt('1', 0); // 1, 按十进制转换

parseInt('2', 1); // NaN, 没有一进制

parseInt('3', 2); // NaN, 按二进制转换不允许出现3

可以改为r = arr.map(Number);,因为Number(value)函数仅接收一个参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值