欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript數(shù)值千分位格式化的兩種簡單實現(xiàn)方法

 更新時間:2016年08月01日 10:05:49   投稿:jingxian  
下面小編就為大家?guī)硪黄狫avaScript數(shù)值千分位格式化的兩種簡單實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在對數(shù)值進行格式化的時候,一個常見的問題是按照千分位格式化,網(wǎng)上對這個問題已經(jīng)有很多種解決方法了,還可以利用Array.prototype.reduce方法來實現(xiàn)千分位格式化。

function formatNumber(num) { 
  if (isNaN(num)) { 
    throw new TypeError("num is not a number"); 
  } 
 
  var groups = (/([\-\+]?)(\d*)(\.\d+)?/g).exec("" + num), 
    mask = groups[1],            //符號位 
    integers = (groups[2] || "").split(""), //整數(shù)部分 
    decimal = groups[3] || "",       //小數(shù)部分 
    remain = integers.length % 3; 
 
  var temp = integers.reduce(function(previousValue, currentValue, index) { 
    if (index + 1 === remain || (index + 1 - remain) % 3 === 0) { 
      return previousValue + currentValue + ","; 
    } else { 
      return previousValue + currentValue; 
    } 
  }, "").replace(/\,$/g, ""); 
  return mask + temp + decimal; 
}

Array的reduce方法在IE9以下不支持,不過,我們可以基于ECMAScript 3來實現(xiàn)一個reduce方法。

在JavaScript中,字符串的replace方法的匹配模式參數(shù)除了字符串以外還可以是一個正則表達(dá)式,下面是利用String.prototype.replace方法來實現(xiàn)千分位格式化的具體代碼:

function formatNumber(num) { 
  if (isNaN(num)) { 
    throw new TypeError("num is not a number"); 
  } 
 
  return ("" + num).replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, "$1,");  
} 

(\d{1,3})是一個捕獲分組,可以用$1來反向引用,?=(\d{3})+(?:$|\.)是正向斷言,表示匹配1到3個數(shù)字后面必須跟3個數(shù)字,但不含最后的3個數(shù)字或者3個數(shù)字和小數(shù)點。

以上這篇JavaScript數(shù)值千分位格式化的兩種簡單實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論