国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JS數字千分位格式化實現方法總結

2024-05-06 16:33:46
字體:
來源:轉載
供稿:網友

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

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

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

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(""))  }};

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

二.于是想到能不能從頭到尾都用字符串完成,不通過數組,即用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)  }};

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

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

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)  }};

性能最佳

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

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位數字,前向聲明的地方替換成逗號,但是如果剛好3的倍數位,會第一位前面也加,所以前面要再來個非前向聲明

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

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江华| 屏山县| 汾西县| 伊通| 桐乡市| 福贡县| 双城市| 金川县| 安多县| 本溪| 雅江县| 伊川县| 洪江市| 上蔡县| 蕉岭县| 高州市| 衡南县| 开化县| 绥德县| 鄂托克前旗| 固原市| 明水县| 宁海县| 蓬莱市| 沽源县| 政和县| 萝北县| 驻马店市| 博客| 赣榆县| 岳池县| 利津县| 内丘县| 永登县| 沂南县| 临沧市| 礼泉县| 加查县| 色达县| 汨罗市| 福清市|