JS如何将数字类型转化为没3个一个逗号的金钱格式

 更新时间:2014年01月27日 15:26:18   作者:  
本文为大家介绍下如何将数字类型转化为没3个一个逗号的金钱格式,下面是具体的实现
3345687687876789123

转化为:xxx,xxx,xxx
复制代码 代码如下:

<script type="text/javascript">

window.onload = function(){
//整个测试由小刀提供
var testFun = function( callback, str ){
var tipElem = document.createElement( 'div' ),
startTime,
duration = 0;
for( var j = 5; j > 0; j-- ){
startTime = +new Date();
for( var i = 10000; i > 0; i-- ){
callback();
}
duration = ((+new Date()) - startTime) + duration;
}
duration = (duration / 5).toFixed(0);
tipElem.innerHTML = str + '总耗时:' + duration + ' ms';
document.body.appendChild( tipElem );
};

var str = '3345687687876789123';

var cuter1 = function( str ){//带刀
var len = str.length,
lastIndex,
arr = [];
while( len > 0 ){
lastIndex = len;
len -= 3;
arr.unshift( str.substring(len, lastIndex) );
}
return arr.join(',');
};


var cuter2 = function( str ){//abcd
return str.replace( /\B(?=(?:\d{3})+$)/g, ',' );
};

var cuter3 = function( str ){//前叔
return str.replace(/(.*)(\d{3})$/,function(){
if(arguments[1]&& arguments[2]){
return arguments[1].replace(/(.*)(\d{3})$/,arguments.callee)+","+arguments[2];
} else {
return arguments[0];
}
});
};


var cuter4 = function( str ){//Alucelx
return str.split('').reverse().join('').replace(/(\d{3})/g, '$1,').split('').reverse().join('');
};

var cuter5 = function( str ){//司徒正美
var ret = [];
while(str){
str = str.replace(/\d{1,3}$/g,function(a){
ret.unshift(a)
return ""
});
}
return ret.join(",");
};
var cuter6 = function( str ){//司徒正美
var n = str.length % 3;
if(n){
return str.slice(0,n) + str.slice(n).replace(/(\d{3})/g,',$1')
}else{
return str.replace(/(\d{3})/g,',$1').slice(1)
}
};
var cuter7 = function(str){//司徒正美
var ret = ""
for(var i = 0, n = str.length, m = n %3 - 1; i < n; i++){
ret += str.charAt(i)
if( i % 3 === m ){
ret += ","
}
}
var e = ret.length - 1
return ret.charAt(e) == "," ? ret.slice(0,e) : ret
}
var cuter8 = function(str){//[[valueOf]]
var s2 = [].slice.call(str);
for(var i=s2.length-3; i>0;i-=3){
s2.splice(i, 0 ,',' );
}
return s2.join("")
}
var cuter9 = function(str){//听说
var newStr= new Array(str.length+ parseInt(str.length/3));
newStr[newStr.length-1]=str[str.length-1];
var currentIndex=str.length-1;
for(var i = newStr.length-1;i >= 0;i--) {
if((newStr.length-i)%4==0)
{
newStr[i]=",";
}else{
newStr[i]=str[currentIndex--];
}
}
return newStr.join("")
}
var cuter10 = function(str){//Rekey
var len = str.length, str2 = '', max = Math.floor(len / 3);
for(var i = 0 ; i < max ; i++){
var s = str.slice(len - 3, len);
str = str.substr(0, len - 3);
str2 = (',' + s) + str2;
len = str.length;
}
str += str2;
return str
}
//下面是性能测试
testFun(function(){
cuter1(str);
}, '方法一' );


testFun(function(){
cuter2(str);
}, '方法二' );


testFun(function(){
cuter3(str);
}, '方法三' );


testFun(function(){
cuter4(str);
}, '方法四' );


testFun(function(){
cuter5(str);
}, '方法五' );
testFun(function(){
cuter6(str);
}, '方法六' );
testFun(function(){
cuter7(str);
}, '方法七' );
testFun(function(){
cuter8(str);
}, '方法八' );
testFun(function(){
cuter9(str);
}, '方法九' );
testFun(function(){
cuter10(str);
}, '方法十' );
}
</script>

新能测试的结果为:
复制代码 代码如下:

方法一总耗时:14 ms
方法二总耗时:9 ms
方法三总耗时:174 ms
方法四总耗时:34 ms
方法五总耗时:39 ms
方法六总耗时:7 ms
方法七总耗时:9 ms
方法八总耗时:30 ms
方法九总耗时:14 ms
方法十总耗时:4 ms

相关文章

  • 使用TextRange获取输入框中光标的位

    使用TextRange获取输入框中光标的位

    使用TextRange获取输入框中光标的位...
    2006-10-10
  • 动态更新highcharts数据的实现方法

    动态更新highcharts数据的实现方法

    下面小编就为大家带来一篇动态更新highcharts数据的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 微信小程序实现拖动悬浮图标效果

    微信小程序实现拖动悬浮图标效果

    这篇文章主要介绍了微信小程序实现拖动悬浮图标效果,小程序上是实现拖动图标,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • 基于javascript实现的搜索时自动提示功能

    基于javascript实现的搜索时自动提示功能

    这篇文章主要介绍了基于javascript实现的搜索时自动提示功能,非常实用,推荐给需要的小伙伴参考下。
    2014-12-12
  • 小程序实现计时器小功能

    小程序实现计时器小功能

    这篇文章主要为大家详细介绍了小程序实现计时器小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • javascript仿XP关机效果的弹出窗口功能

    javascript仿XP关机效果的弹出窗口功能

    javascript仿XP关机效果的弹出窗口功能...
    2007-10-10
  • Swiper.js插件超简单实现轮播图

    Swiper.js插件超简单实现轮播图

    这篇文章主要介绍了Swiper.js插件超简单实现轮播图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • JavaScript函数作用域链分析

    JavaScript函数作用域链分析

    这篇文章主要介绍了JavaScript函数作用域链,实例分析了函数作用域链的原理与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • 浅谈JavaScript超时调用和间歇调用

    浅谈JavaScript超时调用和间歇调用

    JavaScript是单线程语言,但它允许通过设置超时值和间歇时间值来调度代码在特定的时刻执行。前者是在指定的时间过后执行代码,而后者则是每隔指定的时间就执行一次代码。
    2015-08-08
  • JS随机密码生成算法

    JS随机密码生成算法

    这篇文章主要为大家详细介绍了JS随机密码生成算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09

最新评论