JS实现千分位

方法一:正则实现

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

  解释:

  1、正则表达式 \d{1,3}(?=(\d{3})+$)  表示前面有1~3个数字,后面的至少由一组3个数字结尾

  2、?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始

  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));

原文地址:https://www.cnblogs.com/goloving/p/9393556.html

时间: 2024-11-06 07:32:11

JS实现千分位的相关文章

js从千分位格式

从千分位格式化谈JS性能优化 http://heeroluo.net/article/detail/115 方法六 // 方法六 function toThousands(num) { return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); }

JS 添加千分位,测试可以使用

<script language="javascript" type="text/javascript">function comdify(n){ var re=/\d{1,3}(?=(\d{3})+$)/g; var n1=n.replace(/^(\d+)((\.\d+)?)$/,function(s,s1,s2){return s1.replace(re,"$&,")+s2;}); return n1;} </sc

js jquery版本的 金额千分位转换函数(非正则,效率极高)

没想到js里面没有 金额千分位格式化的处理函数(例:1,234.01 这样的格式),网上搜了一圈,都是使用正则的方式处理的.正则的效率不敢恭维啊,又耗费资源速度又慢(虽然处理起来会直观一些). 因此专门写了一个纯数值处理最后输出字符串个 金额千分位处理函数,并封装成jQuery函数包,处理时效率很高,可高频率的使用,直接上代码.还有min压缩版本可点击连接下载. 如果你不是jQuery环境,直接把源码拿出来,重新封装到自己的函数中能够就能用. 源码以及min包下载地址:jQuery.format

js中如何将数据获得2位小数以及对数据进行千分位划分

js中toFixed(n) 方法可把 数字四舍五入为指定小数位数n的数字,注意:这个方法只能对数据类型为Number的数据起作用,包括float,int等.例如: 123.12345.toFixed(2); "123.12" 对数据进行千分位划分采用这样的一个语句就行了:.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,').注意:replace()方法只能对字符串类型起作用,而我们队数据进行千分位划分的时候通常是对数值进行划分,因此在

封装js千分位加逗号和删除逗号

原文:封装js千分位加逗号和删除逗号 //封装js千分位加逗号和删除逗号 alert( format(2545678754.020001) ) //2,545,678,754.03 alert( format(-2545678754.020001) ) //-2,545,678,754.02 alert( format(2545678754.000000000009) ); //当值很长的时候会出现数字被截取的问题 alert( delformat('2,545,678,754.03') );

js千分位的函数

不错的js千分位函数,适用于将金额每3位用“,”分隔 /*for price using thousands separator */ function fprice(s,n){ s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; //n为小数点后保留小数位 var l = s.split(".")[0].split("").

Js笔试题之千分位格式化

用js实现如下功能,将给定的数字转化成千分位的格式,如把“10000”转化成“10,000”,并考虑到性能方面的因素. 一.首先想到的办法,将数字转换为字符串(toString())再打散成数组(split),如果直接数字转换为数组,就是一整个放进去了,不能单独取到每一位.然后通过循环,逐个倒着把数组中的元素插入到新数组的开头(unshift),第三次或三的倍数次,插入逗号,最后把新数组拼接成一个字符串 n=1233456; toQfw(n); function toQfw(){ var arr

[js开源组件开发]数字或金额千分位格式化组件

数字或金额千分位格式化组件 这次距离上一个组件<[js开源组件开发]table表格组件>时隔了一个月,由于最近的项目比较坑,刚挖完坑,所以来总结性提出来几个组件弥补这次的空缺,首先是金额和数字的千分位和小数点控制的组件,它的作用主要是在输入框时限制输入的内容为数字.也可以用于普通标签的数字格式化,效果如下图: demo演示地址请点击 http://www.lovewebgames.com/jsmodule/format-number.html 源码github托管地址请点击https://gi

数字千分位处理,number.js

官方文档:https://www.customd.com/articles/14/jquery-number-format-redux $.number(data,2);//保留两位,加上千分位 $('#price').number( true, 2 );//输入的时候自动进行格式化,保留两位小数点,加上千分位 当input type="number"时,此插件不支持,type必须是text才行