方法一
使用正则表达式:
function formateNumbers(number, mark) {
let separator = mark || '.'
// 将数字根据小数点分割成数组
let arrNumber = number && number.toString().split('.')
if( arrNumber && arrNumber.length ) {
// 为小数点前面的数字,添加分隔符
arrNumber[0] = arrNumber[0].replace(/\B(?=(\d{3})+(?!\d))/g, separator)
arrNumber[1] = arrNumber[1].replace(/\B(?=(\d{3})+(?!\d))/g, separator)
}
// 将数组处理为字符串返回
return arrNumber && arrNumber.join('.')
}
方法二
使用数组的reduce
方法
function thousandNum(num = 0) {
const arr = num.toString().split('.')
const intNum = arr[0]
const floatNum = arr[1]
// 处理整数部分
const getInt = function(nums) {
return nums.split('').reverse().reduceRight((prev, curr, index) => {
return prev + (index % 3 ? curr : `${curr},`)
}, '').replace(/^,|,$/g, '')
}
// 处理小数部分
const getFloat = function(nums) {
return nums.split('').reduce((prev, curr, index) => {
return prev + ((index + 1) % 3 ? curr : `${curr},`)
}, '').replace(/^,|,$/g, '')
}
return arr.length > 1 ? `${getInt(intNum)}.${getFloat(floatNum)}` : `${getInt(intNum)}`
}