JS如何将数字类型转化为没3个一个逗号的金钱格式

本文为大家介绍下如何将数字类型转化为没3个一个逗号的金钱格式,下面是具体的实现

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技巧 时间:2014-05-09 人气:27
本文关键词: 数字类型 金钱格式
分享到:

相关文章

iOS 开发

Android 开发

Python 开发

JAVA 开发

开发语言

PHP 开发

Ruby 开发

搜索

前端开发

数据库

开发工具

开放平台

Javascript 开发

.NET 开发

云计算

服务器

Copyright (C) codeweblog.com, All Rights Reserved.

CodeWeblog.com 版权所有 闽ICP备15018612号

processed in 0.033 (s). 10 q(s)