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 相关文章推荐
判断复选框是否被选中的两种方法
Jun 04 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
jQuery实现checkbox全选的方法
Jun 10 Javascript
简介AngularJS中使用factory和service的方法
Jun 17 Javascript
bootstrap组件之按钮式下拉菜单小结
Jan 19 Javascript
理解 javascript 中的函数表达式与函数声明
Jul 07 Javascript
js下拉菜单生成器dropMenu使用方法详解
Aug 01 Javascript
JS实现的tab页切换效果完整示例
Dec 18 Javascript
vue中多个倒计时实现代码实例
Mar 27 Javascript
vue filter 完美时间日期格式的代码
Aug 14 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 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字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
基于JQuery制作的产品广告效果
2010/12/08 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
Python用Try语句捕获异常的实例方法
2019/06/26 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
如何手工释放资源
2013/12/15 面试题
铁路个人事迹材料
2014/01/30 职场文书
离职保密承诺书
2014/05/28 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
分享几个实用的CSS代码块
2022/06/10 HTML / CSS