数字格式化千分位1234567890 转 1,234,567,890
1、while循环
<template>
<div>{{ num | formatNum }}</div>
</template>
<script>
export default {
data() {
return {
num: '1234567890'
}
},
filters: {
formatNum(arg) {
let count = arg.length
let arr = []
while (count >= 3) {
arr.unshift(arg.slice(count - 3, count))
count -= 3
}
// 如果是不是3的倍数就另外追加到上去
arg.length % 3 && arr.unshift(arg.slice(0, arg.length % 3))
return arr.toString()
}
}
}
</script>
2、reduce()
<template>
<div>{{ num | formatNum }}</div>
</template>
<script>
export default {
data() {
return {
num: '1234567890'
}
},
filters: {
formatNum(arg) {
return arg.split('').reverse().reduce((prev, next, index) => {
return ((index % 3) ? next : (next + ',')) + prev
})
}
}
}
</script>
3、 正则表达式
<template>
<div>{{ num | formatNum }}</div>
</template>
<script>
export default {
data() {
return {
num: '1234567890'
}
},
filters: {
formatNum(arg) {
return arg.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
}
}
}
</script>
4、toLocaleString()
<template>
<div>{{ (num * 1).toLocaleString() }}</div>
</template>
<script>
export default {
data() {
return {
num: '1234567890'
}
}
}
</script>