JavaScript实现千位分隔符的几种方式
一、将数字转换为字符数组
function numFormat(num) {
num=num.toString().split('.');
var arr=num[0].split('').reverse();
var res = [];
for(var i = 0, len=arr.length; i < len; i++) {
if(i%3==0&&i!=0) {
res.push(',');
}
res.push(arr[i]);
}
res.reverse();
if(num[1]) {
res=res.join('').concat('.'+num[1]);
}else{
res=res.join('');
}
return res;
}
二、使用JS自带的函数 toLocaleString
var a=1234567894532;
var b=673439.4542;
console.log(a.toLocaleString()); // "1,234,567,894,532"
console.log(b.toLocaleString()); // "673,439.454" (小数部分四舍五入了)
要注意的是这个函数在没有指定区域的基本使用时,返回使用默认的语言环境和默认选项格式化的字符串,所以不同地区数字格式可能会有一定的差异。最好确保使用 locales 参数指定了使用的语言。
测试发现小数部分会根据四舍五入只留下三位。
三、使用正则表达式和replace函数
function numFormat(num) {
// 先提取整数部分
var res = num.toString().replace(/\d+/, function (n) {
return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
return $1 + ',';
});
});
return res;
}
var a=1234567894532;
var b=673439.4542;
console.log(numFormat(a)); // "1,234,567,894,532"
console.log(numFormat(b)); // "673,439.4542"