本文实例讲述了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数学运算用法总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
本文向大家介绍JS实现数字格式千分位相互转换方法,包括了JS实现数字格式千分位相互转换方法的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇JS实现数字格式千分位相互转换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍JavaScript数值千分位格式化的两种简单实现方法,包括了JavaScript数值千分位格式化的两种简单实现方法的使用技巧和注意事项,需要的朋友参考一下 在对数值进行格式化的时候,一个常见的问题是按照千分位格式化,网上对这个问题已经有很多种解决方法了,还可以利用Array.prototype.reduce方法来实现千分位格式化。 Array的reduce方法在IE9以下不支持,不
使用 toLocaleString() 将浮点数转换为 Decimal mark 格式。 将整数部分转化为用逗号分隔的字符串。 const toDecimalMark = num => num.toLocaleString('en-US'); toDecimalMark(12305030388.9087); // "12,305,030,388.909"
本文向大家介绍JS基于正则实现数字千分位用逗号分隔的方法,包括了JS基于正则实现数字千分位用逗号分隔的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS基于正则实现数字千分位用逗号分隔的方法。分享给大家供大家参考,具体如下: 运行结果:222,122,122.68 PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用: JavaScript正则表达式在线测试工具: htt
本文向大家介绍node.js中格式化数字增加千位符的几种方法,包括了node.js中格式化数字增加千位符的几种方法的使用技巧和注意事项,需要的朋友参考一下 每三位以逗号分隔的处理方式 正则方式: 循环查找方式 toLocaleString函数:
本文向大家介绍js 实现数值的千分位及保存小数方法(推荐),包括了js 实现数值的千分位及保存小数方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇js 实现数值的千分位及保存小数方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。