数字千分位格式化
将数字千分位格式化,输出字符串如输入数字12050100,输出字符串12,050,100(注意:逆序判断)常见思路
转换为数组,reverse,每3位拆分使用正则表达式使用字符串拆分代码实现
数组方式export function numFormat1 (n:number):string {n = Math.floor(n) // 只考虑整数const s = n.toString()const arr = s.split('').reverse()return arr.reduce((prev,val,idx) =>{if (idx % 3 === 0) {if (prev) {return val + ',' + prev} else {return val}} else {return val + prev}},'')}
字符串方式
export function numFormat2 (n:number):string {n = Math.floor(n) // 只考虑整数const s = n.toString()const len = s.lengthlet res = ''for (let i = len -1; i >= 0; i--) {const j = len - iif (j % 3 === 0) {if (i === 0) {res = s[i] + res} else {res = ',' + s[i] + res}} else {res = s[i] + res}}return res}
功能测试
const n = 12050100console.log(numFormat1(n)) console.log(numFormat2(n))
打印结果
12,050,10012,050,100
性能测试
console.time('numFormat1')for (let i = 0; i < 100 * 10000; i++) {numFormat1(i)}console.timeEnd('numFormat1')console.time('numFormat2')for (let i = 0; i < 100 * 10000; i++) {numFormat2(i)}console.timeEnd('numFormat2')
打印结果
numFormat1: 249.857msnumFormat2: 105.373ms