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 相关文章推荐
动态创建的表格单元格中的事件实现代码
Dec 30 Javascript
jquery ajax return没有返回值的解决方法
Oct 20 Javascript
Javascript中引用示例介绍
Feb 21 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
Apr 12 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
Sep 24 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
May 24 Javascript
如何在Angular2中使用jQuery及其插件的方法
Feb 09 Javascript
微信小程序实现图片轮播及文件上传
Apr 07 Javascript
vue todo-list组件发布到npm上的方法
Apr 04 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 Javascript
详解用Webpack与Babel配置ES6开发环境
Mar 12 Javascript
vue实现行列转换的一种方法
Aug 06 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(三)
2012/03/22 PHP
基于php 随机数的深入理解
2013/06/05 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python cumsum函数的具体使用
2019/07/29 Python
python实现最大优先队列
2019/08/29 Python
python检测服务器端口代码实例
2019/08/31 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
Python实现图像的垂直投影示例
2020/01/17 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
公司门卫的岗位职责
2014/02/19 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
学校师德师风整改措施
2014/10/27 职场文书
法律意见书范本
2015/06/04 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript