如何将十进制或十六进制字符串转为整数?有无更简洁实现方式?
更简洁的字符串转数值实现方法
当然有更简洁的实现方式啦!其实JavaScript本身就内置了能自动识别十进制和0x开头十六进制字符串的能力,完全不用自己写冗长的条件判断,给你推荐几种方案:
方案一:利用parseInt()的自动解析特性
parseInt本身就会处理这种场景:如果字符串以0x或0X开头,它会自动以十六进制解析;其他情况(符合十进制格式的字符串)则默认按十进制解析(ES5及以后的标准已经修复了旧版对0开头字符串解析为八进制的问题,完全适配你的输入场景)。
实现代码超简单:
const str2num = str => parseInt(str);
测试一下:
str2num('42')→ 返回42str2num('0x12')→ 返回18(和原函数的结果完全一致)
方案二:用一元加号+或Number()做隐式转换
这两种方式是更简洁的写法,它们同样能自动识别十六进制格式的字符串,而且代码更短:
一元加号版本
const str2num = str => +str;
Number()版本
const str2num = str => Number(str);
测试效果和上面完全一样,比如+'0x12'会直接返回18,+'42'返回42。
小提示
如果你的输入范围严格限定为十进制数字字符串或0x开头的十六进制字符串,以上方案都能完美替代原函数。要是之后需要处理其他格式(比如八进制),再根据需求调整即可。
内容的提问来源于stack exchange,提问作者nowox
相关产品推荐
相关产品推荐

