JS数字千分位格式化实现方法总结
本文实例讲述了JS数字千分位格式化实现方法。分享给大家供大家参考,具体如下
用js实现如下功能,将给定的数字转化成千分位的格式,如把“10000”转化成“10,000”,并考虑到性能方面的因素。
一.想到的办法,将数字转换为字符串(toString())再打散成数组(split),如果直接数字转换为数组,就是一整个放进去了,不能单独取到每一位。然后通过循环,逐个倒着把数组中的元素插入到新数组的开头(unshift),第三次或三的倍数次,插入逗号,把新数组拼接成一个字符串
n=1233456; toQfw(n); function toQfw(){ var arr_n=n.toString().split(""); var result=[]; var cs=0; for(var i=arr_n.length-1;i>=0;i--){ cs++; result.unshift(arr_n[i]); if(!(cs%3)&&i!=0){ //i!=0即取到第1位的时候,前面不用加逗号 result.unshift(","); } alert(result.join("")) } };
缺点,一位一位的加进去,性能差,且还要先转换成字符串再转换成数组
二.于是想到能不能从头到尾都用字符串完成,不通过数组,即用charAt()获取子字符串,主要用到字符串拼接
n=1233456; toQfw(n); function toQfw(){ var str_n=n.toString(); var result=""; var cs=0; for(var i=str_n.length-1;i>=0;i--){ cs++; result=str_n.charAt(i)+result; if(!(cs%3)&&i!=0){ result=","+result; } alert(result) } };
缺点依然是一位一位加进去
三.可不可以不用循环用纯字符串方法来实现,这样就不会一位一位加进去了。每次取末三位子字符串放到一个新的空字符串里并拼接上之前的末三位,原本数组不断截掉后三位直到长度小于三个,把剥完的原数组拼接上新的不断被填充的数组
n=1233456; toQfw(n); function toQfw(){ var str_n=n.toString(); var result=""; while(str_n.length>3){ result=","+str_n.slice(-3)+result; str_n=str_n.slice(0,str_n.length-3) } if(str_n){ alert(str_n+result) } };
性能最佳
四.用正则表达式,去三位数字,和字符串匹配,匹配成功就把后三位存起来,前面加逗号,然后将原字符串的值更新为匹配成功剩下的左边,直到正则与字符串匹配成功后三位的值和原字符串更新值相等时,说明取完了
n=1233456; toQfw(n); function toQfw(){ var str_n=n.toString(); var result=""; var re=/\d{3}$/; while(re.test(str_n)){ result=RegExp.lastMatch+result; if(str_n!=RegExp.lastMatch){ result=","+result; str_n=RegExp.leftContext; //匹配成功,返回匹配内容左侧的字符信息 } else{ num=""; } } if(str_n){ alert(str_n+result); } }
五.简化版正则,用前向声明和非前向声明,从后往前匹配3位数字,前向声明的地方替换成逗号,如果刚好3的倍数位,会第一位前面也加,所以前面要再来个非前向声明
var str="123598752"; var re=/(?=(?!(\b))(\d{3})+$)/g; str=str.replace(re,","); alert(str);
更多关于JavaScript相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指