JS如何將數(shù)字類型轉(zhuǎn)化為沒3個(gè)一個(gè)逗號(hào)的金錢格式
更新時(shí)間:2014年01月27日 15:26:18 作者:
本文為大家介紹下如何將數(shù)字類型轉(zhuǎn)化為沒3個(gè)一個(gè)逗號(hào)的金錢格式,下面是具體的實(shí)現(xiàn)
3345687687876789123
轉(zhuǎn)化為:xxx,xxx,xxx
<script type="text/javascript">
window.onload = function(){
//整個(gè)測(cè)試由小刀提供
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 + '總耗時(shí):' + 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
}
//下面是性能測(cè)試
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>
新能測(cè)試的結(jié)果為:
方法一總耗時(shí):14 ms
方法二總耗時(shí):9 ms
方法三總耗時(shí):174 ms
方法四總耗時(shí):34 ms
方法五總耗時(shí):39 ms
方法六總耗時(shí):7 ms
方法七總耗時(shí):9 ms
方法八總耗時(shí):30 ms
方法九總耗時(shí):14 ms
方法十總耗時(shí):4 ms
轉(zhuǎn)化為:xxx,xxx,xxx
復(fù)制代碼 代碼如下:
<script type="text/javascript">
window.onload = function(){
//整個(gè)測(cè)試由小刀提供
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 + '總耗時(shí):' + 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
}
//下面是性能測(cè)試
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>
新能測(cè)試的結(jié)果為:
復(fù)制代碼 代碼如下:
方法一總耗時(shí):14 ms
方法二總耗時(shí):9 ms
方法三總耗時(shí):174 ms
方法四總耗時(shí):34 ms
方法五總耗時(shí):39 ms
方法六總耗時(shí):7 ms
方法七總耗時(shí):9 ms
方法八總耗時(shí):30 ms
方法九總耗時(shí):14 ms
方法十總耗時(shí):4 ms
相關(guān)文章
動(dòng)態(tài)更新highcharts數(shù)據(jù)的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄獎(jiǎng)討B(tài)更新highcharts數(shù)據(jù)的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05
微信小程序?qū)崿F(xiàn)拖動(dòng)懸浮圖標(biāo)效果
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)拖動(dòng)懸浮圖標(biāo)效果,小程序上是實(shí)現(xiàn)拖動(dòng)圖標(biāo),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-04-04
基于javascript實(shí)現(xiàn)的搜索時(shí)自動(dòng)提示功能
這篇文章主要介紹了基于javascript實(shí)現(xiàn)的搜索時(shí)自動(dòng)提示功能,非常實(shí)用,推薦給需要的小伙伴參考下。2014-12-12
小程序?qū)崿F(xiàn)計(jì)時(shí)器小功能
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)計(jì)時(shí)器小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
javascript仿XP關(guān)機(jī)效果的彈出窗口功能
javascript仿XP關(guān)機(jī)效果的彈出窗口功能...2007-10-10
Swiper.js插件超簡(jiǎn)單實(shí)現(xiàn)輪播圖
這篇文章主要介紹了Swiper.js插件超簡(jiǎn)單實(shí)現(xiàn)輪播圖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
淺談JavaScript超時(shí)調(diào)用和間歇調(diào)用
JavaScript是單線程語(yǔ)言,但它允許通過設(shè)置超時(shí)值和間歇時(shí)間值來調(diào)度代碼在特定的時(shí)刻執(zhí)行。前者是在指定的時(shí)間過后執(zhí)行代碼,而后者則是每隔指定的時(shí)間就執(zhí)行一次代碼。2015-08-08

