• [转]JS实现千分位


    本文转自:https://www.cnblogs.com/lvmylife/p/8287247.html

    方法一:正则实现 

    function format (num) {  
        var reg=/d{1,3}(?=(d{3})+$)/g;   
        return (num + '').replace(reg, '$&,');  
    }

    解释

    • 正则表达式 d{1,3}(?=(d{3})+$)  表示前面有1~3个数字,后面的至少由一组3个数字结尾
    • ?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始
    • $& 表示与正则表达式相匹配的内容,具体的可查看 w3school的replace()方法

    运行的过程看下图

    假如有数字13123903243,则正则表达式查找与替换的过程,如下图所示

    方法二:for循环正常思维算法

    复制代码
    function format(num){  
      num=num+'';//数字转字符串  
      var str="";//字符串累加  
      for(var i=num.length- 1,j=1;i>=0;i--,j++){  
          if(j%3==0 && i!=0){//每隔三位加逗号,过滤正好在第一个数字的情况  
              str+=num[i]+",";//加千分位逗号  
              continue;  
          }  
          str+=num[i];//倒着累加数字
      }  
      return str.split('').reverse().join("");//字符串=>数组=>反转=>字符串  
    } 
    复制代码

     基本思路

     方法三:slice+while循环

    复制代码
    function format(num) {
      var arr = [],
    str = num + '', count = str.length; while (count >= 3) { arr.unshift(str.slice(count - 3, count)); count -= 3; } // 如果是不是3的倍数就另外追加到上去 str.length % 3 && arr.unshift(str.slice(0, str.length % 3)); return arr.toString(); }
    复制代码

     方法四:reduce版

    复制代码
    function format(num) {
      var str = num+'';
      // ["8", "7", "6", "5", "4", "3", "2", "1"]
      return str.split("").reverse().reduce((prev, next, index) => {
        return ((index % 3) ? next : (next + ',')) + prev;
      })
    }
    console.log(format(12345678));
    复制代码
  • 相关阅读:
    2017.2.27学习笔记-----开发板,PC,虚拟机三者ping通
    2017.2.25学习笔记
    vue基础之计算属性和侦听器
    vue基础之组件通信
    vue基础之组件创建
    vue基础之监听器
    vue基础之生命周期
    vue基础之条件渲染
    vue基础之插槽
    vue总结
  • 原文地址:https://www.cnblogs.com/freeliver54/p/9729277.html
Copyright © 2020-2023  润新知