zoukankan      html  css  js  c++  java
  • JS千分位格式化方法,以及多种方法性能比较

    方法一字符串版

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

      

    方法二——正则版

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

    方法三——每次截取三位末尾字符串

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

      

    方法四——toLocaleString

    ('2525235235235325').toLocaleString()
    

     

    测试结果

    数字执行50000次消耗的时间(ms)
    方法一方法二方法三方法四
    1 28 231 24 27
    10 37 199 25 28
    100 46 214 24 27
    1000 57 304 49 26
    10000 65 293 49 27
    100000 75 307 55 28

    方法四性能最好.但我暂时并不会使用,因为:

    注意:使用方法四有2个问题:

    1:要先把数字转化成字符串才能达到表格所示的消耗时间.直接操作数据效率会打折.

    2.在我华为的手机上有bug,并不会转化加逗号,还是原模原样展现.应该是机型太老旧问题,现在手机应该没问题,以后兼容没问题肯定首选.

    方法二的测试结果告诉我们,代码长短跟性能高低没有关系。方法三的综合性能是最好的:

    • 对比方法一,每次操作3个字符而不是1个字符,减少循环次数;
    • 对比方法二,使用正则表达式,最浪费性能。

    最后,我选择了方法三作为最终的优化方案。

  • 相关阅读:
    linux安装java环境
    前端JS-websocket与后端通信
    windows安装NodeJS/修改全局路径/配置镜像站
    vue基础---13vue-router
    uni-app项目
    vue基础---12脚手架
    vue基础---11组件
    vue基础---10生命周期
    vue基础---09表单输入绑定
    vue基础---08事件
  • 原文地址:https://www.cnblogs.com/chengfeng6/p/10756846.html
Copyright © 2011-2022 走看看