js千分位分隔符

1 核心都是通过数组的reduce,不同的是,一个通过字符串,一个通过数组

2 算法1

var str = '123456789';
//[9,8,7,6,5,4,3,2,1]
function formatCash(str) {
  //不考虑入参的判断
  return String(str).split('').reverse().reduce((pre, next, index) => {
    return (index % 3) ? (next + "" + pre) : (next + ',' + pre);
  })
}

console.log(formatCash(str));

另外一种优化算法,因为字符串在 js 每次变化都会重新开辟内存,所有转化为数组会更加便捷;

3 算法2

function f(str) {
    const ret = Array.from(str).reverse().reduce((result,next,i,arr) => {
        if((i+1)%3 === 0 && (i+1) !== arr.length) {
            result.push(next,',')
            return result;
        }
        result.push(next);
        return result;
        // return (index % 3) ? (next + "" + pre) : (next + ',' + pre);
    },[])
    return ret.reverse().join('');
}

3 算法3 正则

 var reg2 = /(?!^)(?=(\d{3})+$)/g;
console.log(str2.replace(reg2,',');

更多文章在github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值