最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS格式化數(shù)字(每三位加逗號)的方法總結(jié)

 更新時間:2022年06月27日 09:50:32   作者:小旭2021  
這篇文章總結(jié)了JS格式化數(shù)字(每三位加逗號)的幾種方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

方法一

function toThousands(num) {
    var result = [ ], counter = 0;
    num = (num || 0).toString().split('');
    for (var i = num.length - 1; i >= 0; i--) {
        counter++;
        result.unshift(num[i]);
        if (!(counter % 3) && i != 0) { result.unshift(','); }
    }
    return result.join('');
}

方法一的執(zhí)行過程就是把數(shù)字轉(zhuǎn)換成字符串后,打散為數(shù)組,再從末尾開始,逐個把數(shù)組中的元素插入到新數(shù)組(result)的開頭。每插入一個元素,counter就計一次數(shù)(加1),當(dāng)counter為3的倍數(shù)時,就插入一個逗號,但是要注意開頭(i為0時)不需要逗號。最后通過調(diào)用新數(shù)組的join方法得出結(jié)果。
方法一比較清晰易懂,也在項目中用了一段時間。但是直覺告訴我,它的性能并不好。

 方法二

function toThousands(num) {
    var result = '', counter = 0;
    num = (num || 0).toString();
    for (var i = num.length - 1; i >= 0; i--) {
        counter++;
        result = num.charAt(i) + result;
        if (!(counter % 3) && i != 0) { result = ',' + result; }
    }
    return result;
}

方法二是方法一的改良版,不把字符串打散為數(shù)組,始終對字符串操作。

方法三 - 循環(huán)匹配末尾的三個數(shù)字

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

方法三是完全不同的算法,通過正則表達(dá)式循環(huán)匹配末尾的三個數(shù)字,每匹配一次,就把逗號和匹配到的內(nèi)容插入到結(jié)果字符串的開頭,然后把匹配目標(biāo)(num)賦值為還沒匹配的內(nèi)容(RegExp.leftContext)。此外,還要注意:

1.如果數(shù)字的位數(shù)是3的倍數(shù)時,最后一次匹配到的內(nèi)容肯定是三個數(shù)字,但是最前面的三個數(shù)字前不需要加逗號;
2.如果數(shù)字的位數(shù)不是3的倍數(shù),那num變量最后肯定會剩下1到2個數(shù)字,循環(huán)過后,要把剩余的數(shù)字插入到結(jié)果字符串的開頭。

雖然方法三減少了循環(huán)次數(shù)(一次循環(huán)處理三個字符),但由于用到了正則表達(dá)式,一定程度上增加了消耗。

方法四 - 方法三的字符串版

function toThousands(num) {
    var num = (num || 0).toString(), result = '';
    while (num.length > 3) {
        result = ',' + num.slice(-3) + result;
        num = num.slice(0, num.length - 3);
    }
    if (num) { result = num + result; }
    return result;
}

事實上,截取末尾三個字符的功能可以通過字符串類型的slice、substr或substring方法做到。這樣就可以避免使用正則表達(dá)式。

 方法五 - 分組合并法

function toThousands(num) {
    var num = (num || 0).toString(), temp = num.length % 3;
    switch (temp) {
        case 1:
        num = '00' + num;
        break;
        case 2:
        num = '0' + num;
        break;
    }
    return num.match(/\d{3}/g).join(',').replace(/^0+/, '');
}

先把數(shù)字的位數(shù)補足為3的倍數(shù),通過正則表達(dá)式,將其切割成每三個數(shù)字一個分組,再通過join方法添加逗號,最后還要把補的0移除。

方法六 - 懶人法

function toThousands(num) {
    return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
}

一直覺得這個格式化是可以通過一條正則表達(dá)式替換做出來的,但是需要用到斷言等寫法,無奈自己對這部分不太熟。Google了一下,還真找到了這么一條正則表達(dá)式,這估計是代碼最短的實現(xiàn)。

到此這篇關(guān)于JS格式化數(shù)字的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • layui異步加載table表中某一列數(shù)據(jù)的例子

    layui異步加載table表中某一列數(shù)據(jù)的例子

    今天小編就為大家分享一篇layui異步加載table表中某一列數(shù)據(jù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • Vue使用Canvas繪制圓與半圓的示例詳解

    Vue使用Canvas繪制圓與半圓的示例詳解

    在?Canvas?中,基本圖形包括直線圖形和曲線圖形,在我們的工作中,經(jīng)常在統(tǒng)計圖中會看到有餅狀圖等這樣的圓弧圖形,當(dāng)然繪制曲線圖形那么我們要知道曲線圖形的繪制往往會涉及到曲線與弧線,所以本文就給大家介紹一下Canvas繪制圓與半圓的方法
    2023-08-08
  • 頁面加載完畢后滾動條自動滾動一定位置

    頁面加載完畢后滾動條自動滾動一定位置

    希望頁面加載完畢后向左自動滾動一定位置,下面有個不錯的方法可以輕松幫大家實現(xiàn)下
    2014-02-02
  • JS實現(xiàn)獲取自定義屬性data值的方法示例

    JS實現(xiàn)獲取自定義屬性data值的方法示例

    這篇文章主要介紹了JS實現(xiàn)獲取自定義屬性data值的方法,結(jié)合實例形式較為詳細(xì)的分析了javascript針對自定義屬性data的相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • 二維碼圖片生成器QRCode.js簡單介紹

    二維碼圖片生成器QRCode.js簡單介紹

    這篇文章主要為大家簡單介紹了二維碼圖片生成器QRCode.js,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 微信小程序websocket聊天室的實現(xiàn)示例代碼

    微信小程序websocket聊天室的實現(xiàn)示例代碼

    這篇文章主要介紹了微信小程序websocket聊天室的實現(xiàn)示例代碼,小程序本身對http、websocket等連接均有諸多限制,所以這次項目選擇了node.js自帶的ws模塊。感興趣的可以參考一下
    2019-02-02
  • 使用layui的router來進(jìn)行傳參的實現(xiàn)方法

    使用layui的router來進(jìn)行傳參的實現(xiàn)方法

    今天小編就為大家分享一篇使用layui的router來進(jìn)行傳參的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • Javascript 鏈?zhǔn)阶饔糜蛟敿?xì)介紹

    Javascript 鏈?zhǔn)阶饔糜蛟敿?xì)介紹

    這篇文章主要介紹了Javascript 鏈?zhǔn)阶饔糜蛟敿?xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • js中什么時候不能使用箭頭函數(shù)

    js中什么時候不能使用箭頭函數(shù)

    箭頭函數(shù)是和我們工作密切相關(guān)的東西,本文主要介紹了js中什么時候不能使用箭頭函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • javascript 二分法(數(shù)組array)

    javascript 二分法(數(shù)組array)

    擴展Array對象,為其添加二分法查找功能,提高查找效率。
    2010-04-04

最新評論

洪洞县| 门头沟区| 阜平县| 壶关县| 黎川县| 华池县| 德江县| 金塔县| 太谷县| 房山区| 铅山县| 汝南县| 龙门县| 登封市| 陈巴尔虎旗| 敖汉旗| 峨边| 朔州市| 崇礼县| 会泽县| 会宁县| 永登县| 韩城市| 什邡市| 太湖县| 都匀市| 伊春市| 广州市| 平乡县| 濉溪县| 雅江县| 南陵县| 比如县| 安乡县| 德阳市| 大埔区| 仪征市| 蓝山县| 邻水| 通道| 大埔县|