思路就是通過(guò)str.slice(beginIndex[, endIndex])函數(shù)每3位截?cái)鄐tring處理加上,.
直接處理string效率上是高于轉(zhuǎn)為數(shù)組再轉(zhuǎn)回的.
const formatToThousands = num => {
let number = num.toString();
let result = '';
while (number.length > 3) {
result = `,${number.slice(-3)}${result}`; //從尾部開(kāi)始3位截?cái)嗵幚砑?,'
number = number.slice(0, number.length -3); //number 截?cái)嗟粑膊?位
}
return `${number}${result}`
}
下面是處理可能包含小數(shù)的數(shù)字
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: 以上沒(méi)判斷傳入?yún)?shù)是否是數(shù)字, 以及負(fù)數(shù)情況.