JS数字千分位格式化实现⽅法总结
本⽂实例讲述了JS数字千分位格式化实现⽅法。分享给⼤家供⼤家参考,具体如下:
⽤js实现如下功能,将给定的数字转化成千分位的格式,如把“10000”转化成“10,000”,并考虑到性能⽅⾯的因素。
⼀.⾸先想到的办法,将数字转换为字符串(toString())再打散成数组(split),如果直接数字转换为数组,就是⼀整个放进去了,不能单独取到每⼀位。然后通过循环,逐个倒着把数组中的元素插⼊到新数组的开头(unshift),第三次或三的倍数次,插⼊逗号,最后把新数组拼接成⼀个字符串
n=1233456;
toQfw(n);
function toQfw(){
var arr_String().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_String();
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_String();
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_String();
var result="";
var re=/\d{3}$/;
st(str_n)){
result=RegExp.lastMatch+result;
if(str_n!=RegExp.lastMatch){
result=","+result;
str_n=RegExp.leftContext; //匹配成功,返回匹配内容左侧的字符信息
}
else{
num="";
}
}
if(str_n){
js数组方法总结
alert(str_n+result);
}
}
五.简化版正则,⽤前向声明和⾮前向声明,从后往前匹配3位数字,前向声明的地⽅替换成逗号,但是如果刚好3的倍数位,会第⼀位前⾯也加,所以前⾯要再来个⾮前向声明
var str="123598752";
var re=/(?=(?!(\b))(\d{3})+$)/g;
place(re,",");
alert(str);
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》
希望本⽂所述对⼤家JavaScript程序设计有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。