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 相关文章推荐
JavaScript调用堆栈及setTimeout使用方法深入剖析
Feb 16 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
Jun 27 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
Aug 01 Javascript
vue.js学习之递归组件
Dec 13 Javascript
原生js实现瀑布流布局
Mar 08 Javascript
利用Three.js如何实现阴影效果实例代码
Sep 26 Javascript
JS实现的集合去重,交集,并集,差集功能示例
Mar 13 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
JavaScript时间日期操作实例小结【5个示例】
Dec 22 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 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
Session的工作方式
2006/10/09 PHP
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
php2html php生成静态页函数
2008/12/08 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
PHP生成器简单实例
2015/05/13 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
php源码的安装方法和实例
2019/09/26 PHP
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Django框架反向解析操作详解
2019/11/28 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
python的数学算法函数及公式用法
2020/11/18 Python
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
小学校园文化建设汇报材料
2014/08/19 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
简易离婚协议书范本
2014/10/24 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年学校工作总结
2014/11/20 职场文书
师德标兵事迹材料
2014/12/19 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python