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

    原文作者:jimwmg
    原文地址: https://segmentfault.com/a/1190000015122435
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞