JavaScript數字千分位格式化

antzone發表於2018-03-19

本章節分享一段程式碼例項,它實現了數字千分位格式化效果,具有不錯的實用性。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function toThousands(num) {
  var num = (num || 0).toString(), re = /\d{3}$/, result = '';
  while ( re.test(num) ) {
    result = RegExp.lastMatch + result;
    if (num !== RegExp.lastMatch) {
      result = ',' + result;
      num = RegExp.leftContext;
    } 
    else {
      num = '';
      break;
    }
  }
  if (num) { 
    result = num + result; 
  }
  return result;
}
console.log(toThousands(314518565))

上面的程式碼實現了格式化效果,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).function toThousands(num) {},此函式實現了格式化效果。

(2).num = (num || 0).toString(),如果沒有傳遞num,則數字的預設值是0,並轉換為字串。

(3).re = /\d{3}$/,此正規表示式可以匹配三位數字。

(4).result = '',宣告一個變數用來儲存轉換結果。

(5).while ( re.test(num) ){},一個迴圈語句,判斷num是否匹配指定的正規表示式。

(6).result = RegExp.lastMatch + result,將最後一次匹配的字串和result字串連線起來。

(7).if (num !== RegExp.lastMatch) {

  result = ',' + result;

  num = RegExp.leftContext;

},如果num不等於最後匹配的字串,那麼再result前面加逗號,然後將num的值賦值為最後匹配前面的字串。

(8).else {

  num = '';

  break;

},如果等於的話,就將num賦值為空,跳出迴圈。

(9).if (num) { 

  result = num + result; 

},既然跳出迴圈了,說明num要麼是空,要麼是小於三位的數字,然後和result連線起來。

(10)return result,返回最後的結果。

二.相關閱讀:

(1).while參閱javascript while語句一章節。

(2).RegExp.lastMatch參閱正規表示式RegExp.lastMatch一章節。

(3).RegExp.lastMatch參閱正規表示式RegExp.leftContext一章節。

相關文章