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模板入门介绍
Sep 26 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
js与jquery回车提交的方法
Feb 03 Javascript
javascript解三阶幻方(九宫格)
Apr 22 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
JS实现霓虹灯文字效果的方法
Aug 06 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
Feb 27 Javascript
纯JS实现简单的日历
Jun 26 Javascript
解决vue打包css文件中背景图片的路径问题
Sep 03 Javascript
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
JS动态图片的实现方法完整示例
Jan 13 Javascript
vue实现商品列表的添加删除实例讲解
May 14 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
PHP图像识别技术原理与实现
2016/10/27 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
详解php反序列化
2020/06/10 PHP
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
Python中反射和描述器总结
2018/09/23 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Python常用编译器原理及特点解析
2020/03/23 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
django教程如何自学
2020/07/31 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
信息管理员岗位职责
2013/12/01 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
民政局个人整改措施
2014/09/24 职场文书