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简单的轮播的图片滚动实例
Jun 17 Javascript
HTML Color Picker(js拾色器效果)
Aug 27 Javascript
jquery动态加载select下拉框示例代码
Dec 10 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
Jun 30 Javascript
小米公司JavaScript面试题
Dec 29 Javascript
基于angular2 的 http服务封装的实例代码
Jun 29 Javascript
js事件委托和事件代理案例分享
Jul 25 Javascript
React-router v4 路由配置方法小结
Aug 08 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
Oct 25 Javascript
基于React+Redux的SSR实现方法
Jul 03 Javascript
vuejs实现折叠面板展开收缩动画效果
Sep 06 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
Sep 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
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
Python3基础之输入和输出实例分析
2014/08/18 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
通过数据库向Django模型添加字段的示例
2015/07/21 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
python实现移动木板小游戏
2020/10/09 Python
python 获取计算机的网卡信息
2021/02/18 Python
常用的HTML5列表标签
2017/06/20 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
美术师范毕业生自荐信
2013/11/16 职场文书
师德师风个人整改措施
2014/10/27 职场文书
群众路线调研报告范文
2014/11/03 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书