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 相关文章推荐
js 实现 input type=&quot;file&quot; 文件上传示例代码
Aug 07 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
Feb 08 Javascript
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
Aug 24 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
Mar 15 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
May 24 Javascript
详解vue axios二次封装
Jul 22 Javascript
Vue实现base64编码图片间的切换功能
Dec 04 Javascript
js实现适配移动端的拖动效果
Jan 13 Javascript
使用preload预加载页面资源时注意事项
Feb 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 构造函数construct的前下划线是双的_
2009/12/08 PHP
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
Vue实现日历小插件
2019/06/26 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
Python 用户登录验证的小例子
2013/03/06 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
python 文件转成16进制数组的实例
2018/07/09 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
台湾森森购物网:U-mall
2017/10/16 全球购物
印尼旅游网站:via
2017/11/12 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
实习报告评语
2014/04/26 职场文书
篮球比赛策划方案
2014/06/05 职场文书
单位委托书格式范本
2014/09/29 职场文书
大学三好学生主要事迹范文
2015/11/03 职场文书
员工升职自我评价
2019/03/26 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Ajax实现异步加载数据
2021/11/17 Javascript
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记