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对中文按照拼音排序代码
Aug 20 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
Oct 22 Javascript
浅谈轻量级js模板引擎simplite
Feb 13 Javascript
jquery判断当前浏览器的实现代码
Nov 07 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
Angular工具方法学习
Dec 26 Javascript
vue实现搜索功能
May 28 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
Apr 28 Javascript
VUE使用axios调用后台API接口的方法
Aug 03 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
Nov 06 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 图片上传类代码
2009/07/17 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
php封装的smarty类完整实例
2016/10/19 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
javascript document.images实例
2008/05/27 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
财经学院自荐信范文
2014/02/02 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
海底两万里读书笔记
2015/06/26 职场文书