千分符在前端涉及到金额的页面都会用到,今天就写了一个方法,以备后用,实现的方法很多,对正则熟悉的同学可以使用正则,也可以使用for循环,在这里我使用的是reduce()实现的。
let num = 123456789.012
function format(num) {
let intPart = '' //整数部分
let pointPart = '' //小数点部分
let str = num + '' //数字转换城字符串
let point = str.indexOf('.') //判断是否有小数点
if(point === -1) { // 没有小数点
intPart = str
}else { //有小数点
intPart = str.slice(0,point) + ''
pointPart = str.slice(point + 1) + ''
}
intPart = intPart.split('').reverse().reduce(function(prev, next, index) {
return ((index % 3) ? next : (next + ',')) + prev; //index是从1开始
})
return intPart + '.' + pointPart //拼接整数和小数点部分
}
console.log(format(num)) //123,456,789.012