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 相关文章推荐
Using the TextRange Object
Oct 14 Javascript
表单填写时用回车代替TAB的实现方法
Oct 09 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
Sep 16 Javascript
JS面向对象编程 for Cookie
Sep 19 Javascript
jquery学习笔记 用jquery实现无刷新登录
Aug 08 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
Dec 28 Javascript
jQuery中大家不太了解的几个方法
Mar 04 Javascript
IScroll5 中文API参数说明和调用方法
May 21 Javascript
JS中substring与substr的用法
Nov 16 Javascript
详解Vue自定义过滤器的实现
Jan 10 Javascript
react redux入门示例
Apr 19 Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 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
FCKeditor的安装(PHP)
2007/01/13 PHP
php中文字符截取防乱码
2008/03/28 PHP
PHP常用处理静态操作类
2015/04/03 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
jquery简单体验
2007/01/10 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
利用Python实现命令行版的火车票查看器
2016/08/05 Python
Python之str操作方法(详解)
2017/06/19 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
分析Python中解析构建数据知识
2018/01/20 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
使用python实现滑动验证码功能
2019/08/05 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
python主要用于哪些方向
2020/07/05 Python
python3中for循环踩过的坑记录
2020/12/14 Python
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
2020/11/16 HTML / CSS
生日寿宴答谢词
2014/01/19 职场文书
会计求职信
2014/05/29 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android