JS中千分位格式化数据
功能描述:将给定的数字转化为千分位的格式,如把12345678
转化为12,345,678
。
实现方法如下
- 利用正则实现
function toThousands(num){
let str = num.toString();
return str.replace(/(\d)(?=(?:\d{3})+$)/g, "$1,");
}
toThousands(123); //123
toThousands(1234546); //123,456
toThousands(12345678); //12,345,678
- 字符串拆分拼接:讲数字转换成数组,再通过循环,逐个倒序unshift把元素推进新数组,当为三的倍数次,就插入逗号,最后把新数组拼接成一个字符串。(缺点:一位一位的加进去,性能差,且还要先转换成字符串再转换成数组。)
function toThousands(num){
let numArr = num.toString().split("");
let arr = [];
let count = 0; //用于计数
for(let i=numArr.length-1; i>=0; i--){
count++;
arr.unshift(numArr[i]);
if(!(count%3)&&i!==0) arr.unshift(",");
}
return arr.join("");
}
- 每截取三位进行拼接:每次取末尾三位子字符串放到一个新的空字符串里并拼接上之前的末三位,原本字符串要不断截取直到长度小于三位,最后再拼接在一起。
function toThousands(num){
let str = num.toString();
let res = ""; //用于接收拼接后的新字符串
while(str.length > 3){
res = "," + str.slice(-3) + res;
str = str.slice(0, str.length-3);
}
return str + res;
}