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,',');
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。