17. 数字千分位格式化

93 阅读1分钟

数字千分位格式化

思路1

转换为数组,reverse,每3位拆分

代码实现

// 数组的方法
function format1 (n: number):string {
  let ary = n.toString().split('').reverse()
  return ary.reduce((prev, val, index) => {
    if (index % 3 === 0) {
      if (prev) {
        return val + ',' + prev
      }else {
        return val
      }
    }else {
      return val + prev
    }
  }, '')
}

思路2

使用正则表达式

思路3

使用字符串拆分

代码实现

// 使用字符串的拼接
function format2(n:number): string {
  const str = n.toString()
  let length = str.length;
  let res: string = ""
  for (let i = length-1; i>=0 ;i--) {
    if ((length-i) % 3 === 0) {
      if (i===0) {
        res = str[i] + res
      }else {
        res = ',' + str[i] + res
      }
    }else {
      res = str[i] + res
    }
  }
  return res
}

###总结 根据之前的总结,正则表达式 速度慢, 数字的操作比字符串快,数字和字符串比数组快, 能不用语法糖和api 就不使用 推荐使用字符串