几种给数组加千分符的方法
1. 原生
toLocaleString 还有更多的应用场景
function thousands(num){
return num.toLocaleString();
}
console.log(thousands(1234567.1234567)); // 1,234,567.1234567
console.log(thousands(7654321)); // 7,654,321
2.正则表达式
function thousands(num){
var str = num.toString();
var reg = str.indexOf(".") > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;
return str.replace(reg,"$1,");
}
console.log(thousands(1234567.1234567)); // 1,234,567.1234567
console.log(thousands(7654321)); // 7,654,321
3.字符串打散
把数字分成整数和小数两部分,然后把整数部分差成单字符数组,反向排列后每3位插入一个逗号。然后再一次反向排列并合成字符串加上小数部分。
function thousands(num){
var splits=[],res=[];
var splits = num.toString().split(".");
splits[0].split("").reverse().map(function(item,i){
if(i%3 == 0 && i!=0){ res.push(","); }
res.push(item);
});
return res.reverse().join("")+(splits.length>1 ? "."+splits[1] : "");
}
console.log(thousands(1234567.1234567)); // 1,234,567.1234567
console.log(thousands(7654321)); // 7,654,321
4. 保留小数
如果有保留小数位数的要求,以上方法都可以对参数 num 使用 toFixed(n) 方法,toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
function thousands(num){
num = num.toFixed(2);//保留两位小数
var str = num.toString();
var reg = str.indexOf(".") > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;
return str.replace(reg,"$1,");
}