JavaScript实现千位分隔符

将普通的数字转换为带千位分隔符格式的数字字符串是一个很常见的问题,

千位分隔符格式的规则是数字的整数部分每三位一组,以“,”分节,小数部分不分节。

实现思路一

将数字转换为字符数组,再循环整个数组,每三位添加一个分隔逗号,最后再合并成字符串。因为分隔符在顺序上是从后往前添加,所以方便起见可以先把数组倒叙,添加完之后再倒叙回来,就是正常的顺序了。

 

function numFormat(num){
    num = num.toString().split(".");   //分隔小数点
    var arr = num[0].split("").reverse();
    var res = [];
    for(var i=0,len= arr.length;i<len;i++){
         if(i%3===0i!==0){
                 res.push(",");
          }
         res.push(arr[i]);
    }

  res.reverse();
  
if
(num[1]){ //如果有小数部分的话,添加小数部分 res = res.join("").concat("."+num[1]);
}
else{ res = res.join("")
}
return res }

 

 实现思路二

使用正则表达式和replace表达式

replace 语法:str.replace(regexp|substr, newSubStr|function)

 

(代码还没有搞懂,确实有点难以理解。。。呜呜呜)

function numFormat(num){
var res = num.toString().replace(/\d+/, function(n){

       return n.replace(/(\d)(?=(\d{3})+$)/g, function($1){
                     return $1+",";
        })
})

return res;
}

 

posted on 2020-11-19 18:12  zhishiyv  阅读(673)  评论(0编辑  收藏  举报

导航