3

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
151 声望4 粉丝

点点滴滴,不忘初心