实现数字千分位分隔

简介: 实现数字千分位分隔

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


相关文章
|
6月前
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
83 1
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
|
3月前
|
人工智能
将两个数字用字符串输入,因为b它字符都一样,
将两个数字用字符串输入,因为b它字符都一样,
|
5月前
统计出其中英文字母、空格、数字和其它字符的个数
【6月更文挑战第8天】统计出其中英文字母、空格、数字和其它字符的个数。
42 9
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
数字实现千分位分隔符
数字实现千分位分隔符
62 0
|
关系型数据库 MySQL
如何用“”格式化数字 作为千位分隔符,“,”作为十进制分隔符?
如何用“”格式化数字 作为千位分隔符,“,”作为十进制分隔符?
120 0
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
270 0
06:空格分隔输出
06:空格分隔输出
159 0
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
589 0
|
算法 JavaScript API
你有几种方式实现数字千分位分割?
前言 这既是一道常见的面试题,也是实际工作中常见的一个需求。这虽然不是一道算法题,但是它是一道发散性思维的题目,想要实现这个功能有很多种方法,这就要看你能够想出几种方法了,本篇文章只列出常见的几种,就相当于抛砖引玉了。
355 0