方法一:Number.prototype.toLocaleString()
返回这个数字在特定语言环境下的表示字符串。
该方法的详细介绍请看mdn developer.mozilla.org/zh-CN/docs/…
let num = 123456789; num.toLocaleString()// "123,456,789"
该方法的很方便,但是兼容性不是很好
网络异常,图片无法展示
|
方法二: 通过正则匹配
let num = '12345678' let reg = /(?=\B(\d{3})+$)/g console.log(num.replace(reg,",")) //12,345,678
方法三: 自定义方法分隔
实现思路:
- 将用户传入的数字转为字符串。
- 使用字符串的split方法将其分隔成数组,然后在使用reverse方法进行反转数组。
- 通过用户传入的分割位数来确定需要将数值分为几组。
- 定义一个新数组用来存放添加分隔符的数组。
- 通过分组数来循环确定分隔符的位置。
- 传入的分割位数刚好将数组分组,可能分割符出现在第一位,这时我们需要删除该分隔符,然后反转该添加完分隔符的数组,最后通过join方法转为字符串。
function fn(num, sep, size) { num += ""; let numArr = num.split("").reverse(); let group = parseInt(numArr.length / size); let resArr = [] // 设置一个变量来控制数组分割的起始和终止 let i = 0; while (group) { // 确定分隔符的位置 resArr = [...resArr, ...numArr.slice(size * i, size * (i + 1)), sep] group--; i++; } // 表示参与分割的数组元素个数 const restIndex = resArr.length - parseInt(numArr.length / size); // 将没参与分组的元素添加到已经添加分隔符的数组中 resArr = [...resArr, ...numArr.slice(restIndex)] // 将分隔好的数组反转,并转为字符串。 let strNum = resArr.reverse().join('') if (strNum[0] === sep) { strNum = strNum.slice(1) } return strNum; } console.log(fn(12345678, ',', 3)) //12,345,678