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


Posted in Javascript onJanuary 27, 2014

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
Javascript 相关文章推荐
jQuery 位置插件
Dec 25 Javascript
js 异步处理进度条
Apr 01 Javascript
Fixie.js 自动填充内容的插件
Jun 28 Javascript
JavaScript设置获取和设置属性的方法
Mar 04 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
Jun 08 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
Dec 22 Javascript
JS中的作用域链
Mar 01 Javascript
ES6中Class类的静态方法实例小结
Oct 28 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
Vue使用NProgress的操作过程解析
Oct 10 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
微信小程序实现首页弹出广告
Dec 03 Javascript
FF IE浏览器修改标签透明度的方法
Jan 27 #Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
Jan 27 #Javascript
javascript动态添加、修改、删除对象的属性与方法详解
Jan 27 #Javascript
javascript中定义私有方法说明(private method)
Jan 27 #Javascript
用javascript替换URL中的参数值示例代码
Jan 27 #Javascript
jquery选择器之基本过滤选择器详解
Jan 27 #Javascript
jquery选择器之层级过滤选择器详解
Jan 27 #Javascript
You might like
PHP实现把数字ID转字母ID
2013/08/12 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
php集成动态口令认证
2016/07/21 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
2014庆六一活动方案
2014/03/02 职场文书
入党介绍人评语
2014/05/06 职场文书
服务明星事迹材料
2014/12/29 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
物业管理交接协议书
2016/03/24 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python
使用refresh_token实现无感刷新页面
2022/04/26 Javascript