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,',');