- 将数字千分位格式化,输出字符串
- 如输入数组12050100,输出字符串12,050,100
- (注意:逆序判断)
常见思路
- 转换位数组,reverse,每3位拆分
- 使用正则表达式
- 使用字符串拆分
使用数组
function format1(n: number): string {
let n1: number = Math.floor(n)
let arr: string[] = n1.toString().split('').reverse()
return arr.reduce((prev, val, index) => {
if (prev !== '') {
if (index % 3 === 0) {
return val + ',' + prev
} else {
return val + prev
}
} else {
return val
}
}, '')
}
使用字符串
function format2(n: number): string {
let n1: number = Math.floor(n)
let s: string = n1.toString()
let length = s.length
let res = ''
let j: number = 0
for (let i = length - 1
j = length - i
if (j % 3 === 0) {
if (i === 0) {
res = s[i] + res
} else {
res =',' + s[i] + res
}
} else {
res = s[i] + res
}
}
return res
}
功能测试
console.log(format1(10201340983))
console.log(format2(10201340983))
结果

性能分析
- 使用数组,转换影响性能
- 使用正则表达式,性能较差
- 使用字符串,性能较好 -- 推荐答案
划重点
- 顺序:从尾到头
- 尽量不要转换数据结构
- 慎用正则表达式