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 相关文章推荐
node.js中的fs.renameSync方法使用说明
Dec 16 Javascript
jQuery制作效果超棒的手风琴折叠菜单
Apr 03 Javascript
js实现精美的银灰色竖排折叠菜单
May 16 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
Mar 17 Javascript
Javascript动画效果(4)
Oct 11 Javascript
boostrapTable的refresh和refreshOptions区别浅析
Jan 22 Javascript
Vue.js学习示例分享
Feb 05 Javascript
Vue组件tree实现树形菜单
Apr 13 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
Jan 09 Javascript
vue嵌套路由与404重定向实现方法分析
May 04 Javascript
JavaScript中引用vs复制示例详析
Dec 06 Javascript
vue-router传参用法详解
Jan 19 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基础学习笔记
2007/03/18 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
vue-music关于Player播放器组件详解
2017/11/28 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
python生成IP段的方法
2015/07/07 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python 闭包的使用方法
2017/09/07 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
python SVD压缩图像的实现代码
2019/11/05 Python
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
自动化专业个人求职信范文
2013/12/30 职场文书
机关节能减排实施方案
2014/03/17 职场文书
中介业务员岗位职责
2014/04/09 职场文书
火灾现场处置方案
2014/05/28 职场文书
拉歌口号大全
2014/06/13 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
学校教代会开幕词
2016/03/04 职场文书
Golang jwt身份认证
2022/04/20 Golang