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实现input输入框实时输入触发事件代码
Jan 28 Javascript
jQuery插件开发详细教程
Jun 06 Javascript
JavaScript中的函数重载深入理解
Aug 04 Javascript
基于jquery实现图片上传本地预览功能
Jan 08 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
Apr 18 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
移动适配的几种方案(三种方案)
Nov 25 Javascript
深入理解Javascript箭头函数中的this
Feb 13 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
Mar 09 Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 Javascript
vue 项目build错误异常的解决方法
Apr 22 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
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
php数组遍历类与用法示例
2019/05/24 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
webpack多页面开发实践
2017/12/18 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
一百行python代码将图片转成字符画
2021/02/19 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python实现从wind导入数据
2019/12/03 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
使用django自带的user做外键的方法
2020/11/30 Python
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
小学数学教学随笔
2015/08/14 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android