parseInt和map将字符串数组转成整型数组时遇到的坑
是不是三脸蒙蔽?不是用该[1,2,3]吗
经过查阅Array.prototype.map()的文档,深入了解了map()函数的作用机制,由于map()接收的回调函数可以有3个参数:callback(currentValue, index, array),通常我们仅需要第一个参数,而忽略了传入的后面两个参数。不幸的是,parseInt(string, radix)没有忽略第二个参数,导致实际执行的函数分别是:
parseInt('0', 0); // 0, 按十进制转换
parseInt('1', 1); // NaN, 没有一进制
parseInt('2', 2); // NaN, 按二进制转换不允许出现2
可以固定parseInt的第二个参数
可以改为arr.map(Number);,因为Number(value)函数仅接收一个参数;
或者
还可以使用“+”号转
注意以上用法,数组中的字符串不得高于17位,不然会变成IEEE格式,以上所有方法都不行
根本原因js的number类型有个最大值(安全值)即2的53次方为9007199254740992
本文标题:parseInt和map将字符串数组转成整型数组时遇到的坑
本文链接:https://www.haomeiwen.com/subject/lskwortx.html
网友评论