• js中数值类型转换为每三个数字用逗号分隔


    1.最简单的方法

    Number(num).toLocaleString()

    以下方法来源于网络

     
    <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 

    参考来源:https://www.jb51.net/article/46300.htm

  • 相关阅读:
    【练习】flushback基于时间的闪回查询
    【练习】审计
    【练习】新建虚拟机
    织梦安全防护教程首页被挟持、被串改、被挂马、被入侵之后如何解决?
    织梦手机站下一篇变上一篇而且还出错Request Error!
    织梦图集上传错误提示ERROR: Upload Error!
    织梦炒鸡简单3部曲修改文档标题长度限制
    织梦dede:arclist和dede:list输出每个文章的内容有多少页
    织梦后台管理模板无法正常显示模板文件列表解决方法
    织梦列表页多种属性排序[ajax]-支持select方式和降序升序切换
  • 原文地址:https://www.cnblogs.com/thinkguo/p/15096280.html
Copyright © 2020-2023  润新知