首先,我的想法不仅仅只是在千位分隔一次,而是将数字从右往左数,每三位,加一个','。

思路:

1.从右往左数,每三位,截取字符串,按push的方式添加到数组中,不要用unshift方法,因为会影响效率

2.因为刚刚添加数组项目的顺序是跟实际的字符串顺序相反的,所以需要用数组的reverse方法,将数组反转

3.处理一些小小的细节,比如,要是传入一个负数呢,那数字前面不就带负号了,怎么处理,还有,我们是三个一组截取字符串,那要是刚好最前面的字符串有三位,那该怎么办?

4.处理以上的小细节之后,就可以使用数组的join()方法,将数组用','连接

function _comma(number) {
  let sign = ''
  let str = String(number)
  let subStrArr = []
  
  if(number < 0) {
    sign = '-'
    str = String(number).slice(1)
  }

  for(let i = 0;i >= -str.length; i-=3) {
    if(i == 0) {
      subStrArr.push(str.slice(-3))
      continue
    }

    subStrArr.push(str.slice(i-3,i))
  }

  subStrArr.reverse()
  if(subStrArr[0].length === 0) {
    subStrArr.shift()
    subStrArr[0] = sign + subStrArr[0]
  }
  
  return subStrArr.join(',')
}