如何对一大串数值进行千分位、万分位等方式分隔,使用户阅读更加便利,以下介绍3种方法
方法一:使用正则
function regexHandleNum(num) {
return String(num).replace(/\B(?=(\d{3})+(?!\d))/g, ','); // 3是千分位,4是万分位
}
方法二:使用js自带的数组方法进行处理千分位
function handleNum(num) {
return String(num)
.split('')
.reverse()
.reduce((prev, next, index) => {
return (index % 3 ? next : next + ',') + prev; // 3是千分位,4是万分位
});
}
方法三:使用JS内置 API (toLocaleString
),实现数字、金额等等数值的格式化
(111111111).toLocaleString(); // 111,111,111 这种是没有单位的
// 还可以通过2个参数,进行不同数据的处理,例如人民币格式、百分比格式
const opts = {
style: 'currency',
currency: 'CNY',
};
(111111111).toLocaleString('zh-CN', opts); // ¥111,111,111.00
const opts = {
style: 'percent',
currency: 'CNY',
};
(0.5).toLocaleString('zh-CN', opts); // 50%
更多用法请参考MDN
toLocaleString 可以接收两个可选参数:locales 和 options,而且这个 api在各大浏览器通用不存在兼容问题并且这个 api 不止存在 Number 的原型上,Array、Object、Date 原型上都有这个 api,并且格式化出来的值可以根据我们传入的参数出现各种结果。
关于toLocaleString的参数及用法在MDN(Number.prototype.toLocaleString())中有详细的用法。