Node.js中如何将1k/1m等缩写数字转换为数值?
Node.js: 转换带后缀的缩写数字为数值
自定义代码实现
下面是一个轻量的自定义函数,支持解析k(千)、m(百万)、b(十亿)后缀的缩写数字,同时兼容小数和大小写后缀:
function parseAbbreviatedNumber(input) { const multiplierMap = { k: 10 ** 3, m: 10 ** 6, b: 10 ** 9 }; // 匹配数字部分和后缀(支持整数、小数,后缀不区分大小写) const result = input.match(/^(\d+(?:\.\d+)?)([kmb])$/i); if (!result) { // 无匹配后缀时,尝试直接解析为数字(可根据需求改为抛出错误) return parseFloat(input); } const numericPart = parseFloat(result[1]); const suffix = result[2].toLowerCase(); return numericPart * multiplierMap[suffix]; } // 测试示例 console.log(parseAbbreviatedNumber('1k')); // 1000 console.log(parseAbbreviatedNumber('100k')); // 100000 console.log(parseAbbreviatedNumber('1m')); // 1000000 console.log(parseAbbreviatedNumber('1b')); // 1000000000 console.log(parseAbbreviatedNumber('3.2m')); // 3200000 console.log(parseAbbreviatedNumber('5K')); // 5000(大小写兼容)
如果需要支持更多后缀(比如t代表万亿),只需要在multiplierMap中添加对应的键值对即可。
可用的npm包
如果不想手动实现,可以尝试parse-human-number包,它支持解析这类带后缀的数字:
安装:
npm install parse-human-number
使用示例:
const parseHumanNumber = require('parse-human-number'); console.log(parseHumanNumber('1k')); // 1000 console.log(parseHumanNumber('100k')); // 100000 console.log(parseHumanNumber('1m')); // 1000000
内容的提问来源于stack exchange,提问作者Harsh Agrawal
相关产品推荐
相关产品推荐

