JS 将数字类型转化为没3个一个逗号的金钱格式
2014-01-27 14:02
260 查看
3345687687876789123
转化为:xxx,xxx,xxx
新能测试的结果为:
!
转化为: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
!
相关文章推荐
- JS如何将数字类型转化为没3个一个逗号的金钱格式
- JS如何将数字类型转化为没3个一个逗号的金钱格式
- JS 数字格式化为金额格式 (3位一个逗号隔开)
- 关于js正则表达式判断一个字符串是否是正确的有数字和小数点组成的金钱形式和 判读数值类型的正则表达式
- js数字的货币格式表示法(每三位一个逗号分隔)
- 在js中实现对数字每个3个增加一个逗号
- 浅谈 js 数字格式类型
- js 将php生成的time()类型时间戳转化成具体date格式的日期
- js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
- js正则表达式判断一个字符串是否是正确的有数字和小数点组成的金钱形式和 判读数值类型的正则表达式
- js设置数字每三个添加一个逗号,保留两位小数
- 数字格式化为金额格式 (3位一个逗号隔开)
- js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
- iOS 用objective-c实现数字格式,每隔3位添加一个逗号的
- oracle将带有逗号的数字字符串转化为可计算的number类型
- 用js实现下列功能,将给定的数字转化为千分位的格式,如把"10000"转化为"10,000",并考虑性能方面的因素
- 将数字转换为三位之间带一个逗号的格式
- 后台返回一个string类型的json格式数据,前台js如何读取?
- js正则表达式判断一个字符串是否是正确的有数字和小数点组成的金钱形式和 判读数值类型的正则表达式
- Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个