编写一个函数将金额转换为千分位表示法。
方法一: 使用 String.toLocalString 方法。
const a = 3802930
const b = a.toLocaleString()
方法二:使用循环遍历。
将数组转为字符串,从后先前遍历3的倍数前面加',' 然后
// 函数方法一
function convert(num) {
let temp = num.toString()
let str = ''
for (i = temp.length - 1; i >= 0; i--) {
if (i % 3 === 0 && i !== (temp.length - 1)) {
str += ',' + temp[i]
continue
}
str += temp[i]
}
return str.split('').reverse().join('')
}
console.log('打印', convert(1234567526365639))
// 打印 1,234,567,526,365,639
// 函数方法二
function getData(num = 0){
let data = parseInt(num).toString().split('').reverse()
let arr = []
let fol = String(num).split('.')[1]
data.forEach((item, index) => {
if(index % 3 === 0 && index !== 0) {
arr.push( item + ',' )
return
}
arr.push(item)
})
let res = arr.reverse().join('') + (fol ? ('.'+ fol) : '')
return res
}
getData(1234567890.728394)
// 打印 1,234,567,890.728394
方法三:使用正则表达式。
// 正则方法一
let reg = /\d{1,3}(?=(\d{3})+$)/g
let res = String(nums).replace(reg, '$&,')
// 正则方法二
let reg1 = /\B(?=(\d{3})+$)/g
let res1 = String(nums).replace(reg1, ',')
// 打印 1,234,567,890
// ?= 表示 肯定顺序环视
// $& 表示 正则表达式匹配的内容
// \b 表示单词边界
方法四:使用reduce 函数
function getData(num) {
return num.toString().split('').reverse().reduce((total, value, index, array) => {
return ((index % 3) ? value : value + ',') + total
})
}
getData(1234567890)
// 打印 1,234,567,890