JS从入门到放弃,千位分隔符

数字转换为带千位分隔符格式的数字字符串,类似这样的需求,前后端都可以处理。在前端,一般么,都是把数字字符串转换成数组,每个3个加入',',push到数组中,或者通过字符串累加,每隔三位加逗号,过滤正好在第一个数字的情况,加千分位逗号

方法1:

function thousandsFormat(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("");
  }
var num = '23123123123';
thousandFormat(num); // "23,123,123,123"

方法2:
js内置方法 toLocaleString
具体内容可以参考官网

var number = 351212312300;
console.log(number.toLocaleString()); // 351,212,312,300

方法3: 正则表达式,着重推荐!!!要是在面试中,能手写出来,可以无敌一下下

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

第三个方法是最好的,有疑惑的同学可以有时间阅读一下原文,解释的很详细
https://blog.csdn.net/lxcao/article/details/52728246?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2

方法4:正则表达式和replace

function thousandsFormat(num){
  var res=num.toString().replace(/\d+/, function(n){ // 先提取整数部分
       return n.replace(/(\d)(?=(\d{3})+$)/g,function($1){
          return $1+",";
        });
  })
  return res;
}

var a = 123123809123;
console.log(numFormat(a)); // "123,123,809,123"

参考阅读:
1.正则表达式30分钟入门教程
2.String.prototype.replace()
3.https://www.jianshu.com/p/928c68f92c0c

周六周日都在加班,周一又通宵到4点,周二下午打电话又让我赶别的需求。诶,心累,就懒得整理了,大家自己看吧。要是有人有兴趣,我可以提供杭州比较坑的公司excel list,也是别人转发的,不知道是不是真的,就当看看吧

你可能感兴趣的:(JS从入门到放弃,千位分隔符)