/** * 自定义函数名: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"
不知哪位大佬知道,希望可以不吝赐教