首先,我的想法不仅仅只是在千位分隔一次,而是将数字从右往左数,每三位,加一个','。
思路:
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(',') }