需求:用 JS 实现数字千分位格式化,每个三位添加一个逗号
方法一:利用字符串str.slice(-3)是取最后三位数字,并在前面添加‘,’号,再通过strNum.slice(0,str.length-3)(是取从字符串开始到后三位截止)来改变原字符串的位数,然后循环即可。
function formatStr(num){
let strNum = num.toString();
let res = '';
while (strNum.length > 3) {
//选取后三位,在前面添加','并拼接
res = ',' + strNum.slice(-3) + res;
//除后三位以外全部选取,对原字符串重新赋值来改变长度
strNum = strNum.slice(0,strNum.length-3);
};
res = strNum + res;
return res;
}
let str = '111213213322';
console.log(formatStr(str));//1,111,213,213,322
方法二:循环字符串,从后开始循环j%3===0判断是否是3的倍数,是的话就在前面添加‘,’号,不是直接拼接。
function formatStr(num) {
let str = '';
let strNum = num.toString();
let len = strNum.length;
for (let i = len - 1; i >= 0; i--) {
const j = len - i; //获取新的字符的长度
if (j % 3 === 0) {
if (i !== 0) {
str = ',' + strNum[i] + str;
} else {
//第一次直接拼接
str = strNum[i] + str;
}
} else {
str = strNum[i] + str;
}
}
return str
}
let str = '1111213213322';
console.log(formatStr(str));//1,111,213,213,322