JavaScript數(shù)值千分位格式化的兩種簡(jiǎn)單實(shí)現(xiàn)方法
在對(duì)數(shù)值進(jìn)行格式化的時(shí)候,一個(gè)常見的問題是按照千分位格式化,網(wǎng)上對(duì)這個(gè)問題已經(jīng)有很多種解決方法了,還可以利用Array.prototype.reduce方法來實(shí)現(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], //符號(hào)位 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來實(shí)現(xiàn)一個(gè)reduce方法。
在JavaScript中,字符串的replace方法的匹配模式參數(shù)除了字符串以外還可以是一個(gè)正則表達(dá)式,下面是利用String.prototype.replace方法來實(shí)現(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})是一個(gè)捕獲分組,可以用$1來反向引用,?=(\d{3})+(?:$|\.)是正向斷言,表示匹配1到3個(gè)數(shù)字后面必須跟3個(gè)數(shù)字,但不含最后的3個(gè)數(shù)字或者3個(gè)數(shù)字和小數(shù)點(diǎn)。
以上這篇JavaScript數(shù)值千分位格式化的兩種簡(jiǎn)單實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
一文詳解JavaScript如何安全的進(jìn)行數(shù)據(jù)獲取
這篇文章主要為大家介紹了JavaScript如何安全的進(jìn)行數(shù)據(jù)獲取方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03js控制輸入框獲得和失去焦點(diǎn)時(shí)狀態(tài)顯示的方法
這篇文章主要介紹了js控制輸入框獲得和失去焦點(diǎn)時(shí)狀態(tài)顯示的方法,可實(shí)現(xiàn)判斷輸入框的焦點(diǎn)狀態(tài)設(shè)置不同樣式的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2015-01-01html+javascript實(shí)現(xiàn)可拖動(dòng)可提交的彈出層對(duì)話框效果
本文為大家介紹下使用html+javascript實(shí)現(xiàn)可拖動(dòng)彈出層、對(duì)話框、可提交,具體代碼如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08Javascript實(shí)現(xiàn)拖拽排序的代碼
這篇文章主要介紹了Javascript實(shí)現(xiàn)拖拽排序的代碼,本文在vue運(yùn)行環(huán)境下給大家演示下效果圖,對(duì)js拖拽排序?qū)嵗a感興趣的朋友跟隨小編一起看看吧2022-09-09Pro JavaScript Techniques學(xué)習(xí)筆記
Pro JavaScript Techniques學(xué)習(xí)筆記,學(xué)習(xí)js的朋友可以參考下。2010-12-12利用10行js代碼實(shí)現(xiàn)上下滾動(dòng)公告效果
這篇文章主要給大家介紹了關(guān)于利用10行js代碼實(shí)現(xiàn)滾動(dòng)公告效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧。2017-12-12JS數(shù)組中常用方法技巧學(xué)會(huì)進(jìn)階成為大佬
這篇文章主要為大家介紹了JS數(shù)組中常用的方法技巧,學(xué)會(huì)了你就在進(jìn)階成為大佬的道路上又邁進(jìn)了一步,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10