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 相关文章推荐
JQuery 解析多维的Json数据格式
Nov 02 Javascript
jquery 插件学习(二)
Aug 06 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
Mar 11 Javascript
jQuery中scrollLeft()方法用法实例
Jan 16 Javascript
js改变Iframe中Src的方法
May 05 Javascript
Bootstrap3制作自己的导航栏
May 12 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
Jun 30 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
JavaScript判断数组类型的方法
Oct 23 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 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 中dirname(_file_)讲解
2007/03/18 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
详解php反序列化
2020/06/10 PHP
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python中多线程thread与threading的实现方法
2014/08/18 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Python如何省略括号方法详解
2020/03/21 Python
Python异常处理机制结构实例解析
2020/07/23 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
竞争上岗演讲稿
2014/01/05 职场文书
岗位说明书标准范本
2014/07/30 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
2014年变电站工作总结
2014/12/19 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS