编写一个函数将金额转换为千分位表示法。

编写一个函数将金额转换为千分位表示法。

方法一: 使用 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

猜你喜欢

转载自www.cnblogs.com/liea/p/12497391.html