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 相关文章推荐
使弱类型的语言JavaScript变强势
Jun 22 Javascript
javascript中创建对象的三种常用方法
Dec 30 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
js实现倒计时(距离结束还有)示例代码
Jul 24 Javascript
js实现DOM走马灯特效的方法
Jan 21 Javascript
浅谈Javascript实现继承的方法
Jul 06 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
Jul 28 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
Jan 05 Javascript
简单实现js菜单栏切换效果
Mar 04 Javascript
前端主流框架vue学习笔记第二篇
Jul 26 Javascript
JavaScript实现图片拖曳效果
Sep 08 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 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使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
python实现决策树、随机森林的简单原理
2018/03/26 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
python selenium xpath定位操作
2020/09/01 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
医护人员英文求职信范文
2013/11/26 职场文书
消防器材管理制度
2014/01/28 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
教师个人培训总结
2015/02/11 职场文书
2016新年感言
2015/08/03 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫