数字位数不够,进行前补零的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"
  • 不知哪位大佬知道,希望可以不吝赐教
posted @ 2020-07-22 17:00  一只小菜鸟呀!  阅读(5852)  评论(0编辑  收藏  举报