How does JS convert numeric types to money format without 3 commas

  • 2020-03-30 01:34:13
  • OfStack

3345687687876789123

To: XXX, XXX, XXX
 
<script type="text/javascript"> 

window.onload = function(){ 
//The whole test is provided by the knife
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 + ' Total time: ' + duration + ' ms'; 
document.body.appendChild( tipElem ); 
}; 

var str = '3345687687876789123'; 

var cuter1 = function( str ){// With a knife  
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 ){// Before uncle  
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 ){//SiTuZhengMei
var ret = []; 
while(str){ 
str = str.replace(/d{1,3}$/g,function(a){ 
ret.unshift(a) 
return "" 
}); 
} 
return ret.join(","); 
}; 
var cuter6 = function( str ){//SiTuZhengMei
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){//SiTuZhengMei
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){// I heard that  
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 
} 
//The following is the performance test
testFun(function(){ 
cuter1(str); 
}, ' Methods a ' ); 


testFun(function(){ 
cuter2(str); 
}, ' Method 2 ' ); 


testFun(function(){ 
cuter3(str); 
}, ' Methods three ' ); 


testFun(function(){ 
cuter4(str); 
}, ' Methods four ' ); 


testFun(function(){ 
cuter5(str); 
}, ' Methods five ' ); 
testFun(function(){ 
cuter6(str); 
}, ' Methods six ' ); 
testFun(function(){ 
cuter7(str); 
}, ' Methods seven ' ); 
testFun(function(){ 
cuter8(str); 
}, ' Methods eight ' ); 
testFun(function(){ 
cuter9(str); 
}, ' Methods nine ' ); 
testFun(function(){ 
cuter10(str); 
}, ' Methods 10 ' ); 
} 
</script> 

The new energy test results are as follows:
 
 Method 1 total time: 14 ms 
 Method 2 total time: 9 ms 
 Method 3 total time: 174 ms 
 Method 4 total time: 34 ms 
 Method 5 total time: 39 ms 
 Method 6 total time: 7 ms 
 Method 7 total time: 9 ms 
 Method 8 total time: 30 ms 
 Method 9 total time: 14 ms 
 Method 10 total time: 4 ms 

Related articles: