思路就是通过str.slice(beginIndex[, endIndex])函数每3位截断string处理加上,.
直接处理string效率上是高于转为数组再转回的.
const formatToThousands = num => {
let number = num.toString();
let result = '';
while (number.length > 3) {
result = `,${number.slice(-3)}${result}`; //从尾部开始3位截断处理加','
number = number.slice(0, number.length -3); //number 截断掉尾部3位
}
return `${number}${result}`
}
下面是处理可能包含小数的数字
const formatToThousands = num => {
let number = num.toString();
let result = '';
const doshPosition = number.indexOf(".");
let integer = '', decimal = '';
if(doshPosition !== -1) {
integer = number.slice(0, doshPosition);
decimal = number.slice(doshPosition);
} else {
integer = number;
}
while (integer.length > 3) {
result = `,${integer.slice(-3)}${result}`;
integer = integer.slice(0, integer.length -3);
}
return `${integer}${result}${decimal}`
}
tips: 以上没判断传入参数是否是数字, 以及负数情况.