javascript实现将数字转成千分位的方法小结【5种方式】


Posted in Javascript onDecember 11, 2016

本文实例讲述了javascript实现将数字转成千分位的方法。分享给大家供大家参考,具体如下:

javascript实现将数字转成千分位的方法小结【5种方式】

尽管离过年还有两个月之久,春运抢票的战斗已经打响了,悲剧的是我还没抢到票,看到某浏览器上的数字时,想到一个经典面试题,没错,就是数字转千分位。如将数字87463297转成87,463,297,方法有很多种,我这里只想到5种。

1、利用正则的零宽度正预测先行断言(?=exp),名字有点难记,意思是它断言自身出现的位置的后面能匹配表达式exp,对此概念还不明白的可以戳这里,这里不做过多解释。数字千分位的特点是,第一个逗号后面数字的个数是3的倍数,正则:/(\d{3})+$/;第一个逗号前最多可以有1至3个数字,正则:/\d{1,3}/。加起来就是/\d{1,3}(\d{3})+$/,分隔符要从前往后加,就要将前面的数字“87”替换成“87,”,为什么是87不是874?因为874后面只剩下5位数字,在632后加一个分隔符后,将只剩下97,不符合千分位要求,所以第一个分隔符后面的数字位数必须是3的倍数。要匹配数字87,又要保证87后面数字位数是3的倍数,并且要将匹配的87替换成“87,”,就要用到(?=exp),这里先定义一个变量var str = "87463297";

// 零宽断言
console.info( str.replace(/\d{1,3}(?=(\d{3})+$)/g,function(s){
  return s+','
}) )

2、利用正则的子项来替换,跟第1种方法类似。

// 子项
console.info( str.replace(/(\d{1,3})(?=(\d{3})+$)/g,function($1){
  return $1=$1+','
}) )

3、先将字符串转成数组,利用reverse反转数组后每3个数字后添加一个分隔符“,”,到字符串末尾除外,之后转回字符串。

// 利用字符串和数组方法
console.info( str.split("").reverse().join("").replace(/(\d{3})+?/g,function(s){
  return s+",";
}).replace(/,$/,"").split("").reverse().join("") )

4、利用while循环拼接字符串每隔3个数字加一个分隔符,首尾不加

// 利用循环拼接字符串每隔3个加一个分隔符
var result="",
  index = 0,
  len = str.length-1;
while(len>=0) {
  index%3===0&&index!==0 ? result+=","+str[len] : result+=str[len];
  len--;
  index++;
};
result=result.split("").reverse().join("");
console.info(result);

5、利用while循环在数组里push分隔符,首尾不加

// 利用while循环在数组里push分隔符
var result="",
  index = 0,
  len = str.length,
  i = len-1,
  arr = str.split("");
while(len-index>0){
  len>=index&&len-index!==len && arr.splice(len-index,0,",");
  index+=3;
  i-=4;
};
console.log(arr.join(""));

结语:第1种方法是最简洁的,性能也是最好的,推荐使用。顺便附上所有例子的demo源码下载,如果还有其它更好更方便的方法请告诉我,谢谢!

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
ExtJS扩展 垂直tabLayout实现代码
Jun 21 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
Dec 14 Javascript
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
使用js画图之饼图
Jan 12 Javascript
jQuery元素的隐藏与显示实例
Jan 20 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
Feb 25 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
jQuery EasyUI Pagination实现分页的常用方法
May 21 Javascript
本地存储localStorage用法详解
Jul 31 Javascript
weui框架实现上传、预览和删除图片功能代码
Aug 24 Javascript
JavaScript判断对象和数组的两种方法
May 31 Javascript
Vue实现星级评价效果实例详解
Dec 30 Javascript
JavaScript获取服务器时间的方法详解
Dec 11 #Javascript
基于jQuery实现的查看全文功能【实用】
Dec 11 #Javascript
AngularJS过滤器filter用法分析
Dec 11 #Javascript
jquery判断页面网址是否有效的两种方法
Dec 11 #Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 #Javascript
利用JS判断鼠标移入元素的方向
Dec 11 #Javascript
实现JavaScript高性能的数据存储
Dec 11 #Javascript
You might like
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
Python实现遍历数据库并获取key的值
2015/05/17 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
TensorFlow损失函数专题详解
2018/04/26 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python实现经典排序算法的示例代码
2021/02/07 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
Windows和Linux动态库应用异同
2016/07/28 面试题
园林设计师自荐信
2013/11/18 职场文书
银行开业庆典方案
2014/02/06 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
大一新生检讨书
2014/10/29 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
opencv 分类白天与夜景视频的方法
2021/06/05 Python
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android