最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS數(shù)字千分位格式化實現(xiàn)方法總結

 更新時間:2016年12月16日 11:18:39   作者:鬼畜十三  
這篇文章主要介紹了JS數(shù)字千分位格式化實現(xiàn)方法,結合實例形式總結分析了JS實現(xiàn)數(shù)字千分位格式化的常用技巧,包括字符串的分割、拼接、遍歷及正則操作等相關實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了JS數(shù)字千分位格式化實現(xiàn)方法。分享給大家供大家參考,具體如下:

用js實現(xiàn)如下功能,將給定的數(shù)字轉化成千分位的格式,如把“10000”轉化成“10,000”,并考慮到性能方面的因素。

一.首先想到的辦法,將數(shù)字轉換為字符串(toString())再打散成數(shù)組(split),如果直接數(shù)字轉換為數(shù)組,就是一整個放進去了,不能單獨取到每一位。然后通過循環(huán),逐個倒著把數(shù)組中的元素插入到新數(shù)組的開頭(unshift),第三次或三的倍數(shù)次,插入逗號,最后把新數(shù)組拼接成一個字符串

n=1233456;
toQfw(n);
function toQfw(){
  var arr_n=n.toString().split("");
  var result=[];
  var cs=0;
  for(var i=arr_n.length-1;i>=0;i--){
    cs++;
    result.unshift(arr_n[i]);
    if(!(cs%3)&&i!=0){ //i!=0即取到第1位的時候,前面不用加逗號
        result.unshift(",");
    }
    alert(result.join(""))
  }
};

缺點,一位一位的加進去,性能差,且還要先轉換成字符串再轉換成數(shù)組

二.于是想到能不能從頭到尾都用字符串完成,不通過數(shù)組,即用charAt()獲取子字符串,主要用到字符串拼接

n=1233456;
toQfw(n);
function toQfw(){
  var str_n=n.toString();
  var result="";
  var cs=0;
  for(var i=str_n.length-1;i>=0;i--){
    cs++;
    result=str_n.charAt(i)+result;
    if(!(cs%3)&&i!=0){
        result=","+result;
    }
    alert(result)
  }
};

缺點:依然是一位一位加進去

三.可不可以不用循環(huán)用純字符串方法來實現(xiàn),這樣就不會一位一位加進去了。每次取末三位子字符串放到一個新的空字符串里并拼接上之前的末三位,原本數(shù)組不斷截掉后三位直到長度小于三個,最后把剝完的原數(shù)組拼接上新的不斷被填充的數(shù)組

n=1233456;
toQfw(n);
function toQfw(){
  var str_n=n.toString();
  var result="";
  while(str_n.length>3){
    result=","+str_n.slice(-3)+result;
    str_n=str_n.slice(0,str_n.length-3)
  }
  if(str_n){
    alert(str_n+result)
  }
};

性能最佳

四.用正則表達式,去最后三位數(shù)字,和字符串匹配,匹配成功就把后三位存起來,前面加逗號,然后將原字符串的值更新為匹配成功剩下的左邊,直到正則與字符串匹配成功后三位的值和原字符串更新值相等時,說明取完了

n=1233456;
toQfw(n);
function toQfw(){
  var str_n=n.toString();
  var result="";
  var re=/\d{3}$/;
  while(re.test(str_n)){
    result=RegExp.lastMatch+result;
    if(str_n!=RegExp.lastMatch){
      result=","+result;
      str_n=RegExp.leftContext; //匹配成功,返回匹配內容左側的字符信息
    }
    else{
      num="";
    }
  }
  if(str_n){
    alert(str_n+result);
  }
}

五.簡化版正則,用前向聲明和非前向聲明,從后往前匹配3位數(shù)字,前向聲明的地方替換成逗號,但是如果剛好3的倍數(shù)位,會第一位前面也加,所以前面要再來個非前向聲明

var str="123598752";
var re=/(?=(?!(\b))(\d{3})+$)/g;
str=str.replace(re,",");
alert(str);

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數(shù)學運算用法總結》、《JavaScript數(shù)組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

最新評論

淮滨县| 上饶县| 金堂县| 达拉特旗| 开封市| 栖霞市| 仁化县| 团风县| 唐河县| 阿坝县| 邛崃市| 长葛市| 霍州市| 崇信县| 宁强县| 黄梅县| 敖汉旗| 澄江县| 大荔县| 中牟县| 屏边| 西充县| 双流县| 双辽市| 蒙自县| 长兴县| 都兰县| 广州市| 务川| 莱阳市| 同德县| 泗洪县| 宁南县| 朝阳市| 郓城县| 策勒县| 长丰县| 连州市| 青海省| 衡水市| 彭泽县|