數字位數不夠,進行前補零的JS實現方案


/**
* 自定義函數名:PrefixZero
* @param num: 被操作數
* @param n: 固定的總位數
*/
function PrefixZero(num, n) {
    return (Array(n).join(0) + num).slice(-n);
}

  使用原理下::

  • Array(5) => 創建了一個長度為5的空數組
    console.log(Array(5));// [empty × 5]
  • Array(5).join(0) => 用0拼接將數組轉換成字符串
    console.log(Array(5).join(0));// 0000
  • Array(5).join(0)+91 => 通過+,實現字符串的拼接
    console.log(Array(5).join(0)+91);// 000091
  • (Array(5).join(0) + 91).slice(-5) => slice(startIndex,endIndex)方法,用於截取
    參數說明:
    參數是起始位置,含頭不含尾,
    只有一個參數時,表示從該起始位置一直截取到最后。
    參數值為負數時,表示從后往前數,如最后一位,索引是-1
  • PS:不知為何,引入es6的Api不行----------‘X’.padStart(5,ab),使用規則如下:                                                                                                                   

    ES2017 引入了字符串補全長度的功能。如果某個字符串不夠指定長度,會在頭部或尾部補全。padStart()用於頭部補全,padEnd()用於尾部補全。

    'x'.padStart(5, 'ab') // 'ababx' 'x'.padStart(4, 'ab') // 'abax' 'x'.padEnd(5, 'ab') // 'xabab' 'x'.padEnd(4, 'ab') // 'xaba' 

    上面代碼中,padStart()padEnd()一共接受兩個參數,第一個參數是字符串補全生效的最大長度,第二個參數是用來補全的字符串。

    如果原字符串的長度,等於或大於最大長度,則字符串補全不生效,返回原字符串。

    'xxx'.padStart(2, 'ab') // 'xxx' 'xxx'.padEnd(2, 'ab') // 'xxx' 

    如果用來補全的字符串與原字符串,兩者的長度之和超過了最大長度,則會截去超出位數的補全字符串。

    'abc'.padStart(10, '0123456789') // '0123456abc' 

    如果省略第二個參數,默認使用空格補全長度。

    'x'.padStart(4) // ' x' 'x'.padEnd(4) // 'x ' 

    padStart()的常見用途是為數值補全指定位數。下面代碼生成 10 位的數值字符串。

    '1'.padStart(10, '0') // "0000000001" '12'.padStart(10, '0') // "0000000012" '123456'.padStart(10, '0') // "0000123456" 

    另一個用途是提示字符串格式。

    '12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12" '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"
  • 不知哪位大佬知道,希望可以不吝賜教


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM