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 &amp; DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
Jun 02 Javascript
html超链接打开窗口大小的方法
Mar 05 Javascript
ie与ff下的event事件使用介绍
Nov 25 Javascript
js鼠标悬浮出现遮罩层的方法
Jan 28 Javascript
详解jQuery中的元素的属性和相关操作
Aug 14 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
实现单层json按照key字母顺序排序的示例
Dec 06 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 jQuery
JavaScript ES6箭头函数使用指南
Dec 30 Javascript
JavaScript中常用的简洁高级技巧总结
Mar 10 Javascript
Node.js系列之连接DB的方法(3)
Aug 30 Javascript
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
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版(2)
2006/10/09 PHP
PHP4引用文件语句的对比
2006/10/09 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
python fabric使用笔记
2015/05/09 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
庆元旦文艺演出主持词
2014/03/27 职场文书
应聘英语教师求职信
2014/04/24 职场文书
会计学专业求职信
2014/07/17 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
财务负责人岗位职责
2015/02/03 职场文书
家属慰问信
2015/02/14 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
签证工作证明模板
2015/06/15 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android