思路大致为:
- 将数字转换为字符串
- 如果存在小数点,使用substr等方法截取包含小数点后的字符
- 使用substring等方法截取0到小数点位置的字符,并通过split使字符串变为数组
- 遍历数组,当index为3的倍数时,使用splice向当前下标后增加‘,’逗号
- 最后通过join将数组转为字符串并拼接上面截取小数点后的字符
实现的代码如下:
output(n) {
// 将数字转换位字符串
let num = n.toString()
// 如果存在小数点,截取小数点及其后面的字符
let after = num.indexOf('.') > 0 ? num.substr(num.indexOf('.')) : ''
// 如果存在小数点,使用substring截取小数点前的字符,再通过split给字符串转换为数组
let numArr =
num.indexOf('.') > 0
? num.substring(0, num.indexOf('.')).split('')
: num.split('')
numArr.forEach((i, index) => {
// 剔除第一位的整除或者长度为3的倍数的情况,每当取到3位则在当前下标后插入一个','
if (
index !== 0 &&
index !== numArr.length - 1 &&
(index + 1) % 3 === 0
) {
numArr.splice(index + 1, 0, ',')
}
})
// 再将数组转换为字符串,拼接上上面的小数点后面的字符
return numArr.join('') + after
},
有问题的话,希望各位大佬指出!