目录
金额千位分割
背景
之前有个理财产品的需求,需要做到千位分割,也就是每三位一个逗号,目前想到的实现的方法有下面几种:
10000000->10, 000, 000
/**
* 最经济实惠版
* @param {*} num
*/
function splitStr(num) {
if (!num || !Number(num)) return;
return Number(num).toLocaleString();
}
/**
* for循环
* @param {*} num
*/
function splitStr(num) {
if (!num || !Number(num)) return;
let str = String(str);
let newStr = "";
const strLength = str.length;
for (let i = 0; i < strLength; i++) {
const eleStr = str[i];
// 先拼接元素
newStr += eleStr;
// 先排除是最后一项 && 剩余元素数能整除3说明需要加‘,’
if (strLength - 1 - i > 0 && (strLength - 1 + i) % 3 === 0) {
newStr += ",";
}
}
return newStr;
}
/**
* 倒序循环
* @param {*} num
*/
function splitStr(num) {
if (!num || !Number(num)) return;
let str = String(num);
let newStr = "";
const strLength = str.length;
for (let i = strLength - 1; i >= 0; i--) {
// 用charAt()方法通过传入索引获取值
const cur = str.charAt(i);
//i === 0的时候说明倒数到了第一位,所以要i>0 && 总长度减去当前位置,可以整除3说明刚好三位可以加','
// 因为是倒序遍历,所以把上一次的结果拼接在后面
if (i > 0 && (strLength - i) % 3 == 0) {
newStr = `,${cur}${newStr}`;
} else {
newStr = `${cur}${newStr}`;
}
}
return newStr;
}
/**
* while循环版 和for正序循环思路类似
* @param {*} num
*/
function splitStr(num) {
if (!num || !Number(num)) return;
let str = String(num);
let newStr = "";
let index = 0;
while (index <= str.length - 1) {
newStr +=
index > 0 && (str.length - index) % 3 === 0 ?
`,${str[index]}` :
str[index];
index++;
}
return newStr;
}
console.log(splitStr(1000000000));
Powered by Waline v2.15.5