JavaScript數(shù)值千分位格式化的兩種簡單實現(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)文章
一文詳解JavaScript如何安全的進行數(shù)據(jù)獲取
這篇文章主要為大家介紹了JavaScript如何安全的進行數(shù)據(jù)獲取方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03html+javascript實現(xiàn)可拖動可提交的彈出層對話框效果
本文為大家介紹下使用html+javascript實現(xiàn)可拖動彈出層、對話框、可提交,具體代碼如下,感興趣的朋友可以參考下,希望對大家有所幫助2013-08-08Pro JavaScript Techniques學(xué)習(xí)筆記
Pro JavaScript Techniques學(xué)習(xí)筆記,學(xué)習(xí)js的朋友可以參考下。2010-12-12