在 JavaScript 中用前导零填充数字
2022-08-29 22:40:54
在JavaScript中,我需要填充。
例如,如果我有数字9,它将是“0009”。如果我有10个数字,它将是“0010”。请注意,它将始终包含四位数字。
一种方法是减去数字减去4,得到我需要输入的0个数字。
有没有一种更聪明的方法来做到这一点?
在JavaScript中,我需要填充。
例如,如果我有数字9,它将是“0009”。如果我有10个数字,它将是“0010”。请注意,它将始终包含四位数字。
一种方法是减去数字减去4,得到我需要输入的0个数字。
有没有一种更聪明的方法来做到这一点?
您可以使用内置的 String.prototype.padStart()
n = 9;
String(n).padStart(4, '0'); // '0009'
n = 10;
String(n).padStart(4, '0'); // '0010'
到目前为止,没有太多的“光滑”:
function pad(n, width, z) {
z = z || '0';
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
使用数字初始化数组时,它会创建一个数组,该数组的设置为该值,以便该数组看起来包含那么多元素。虽然一些 Array 实例方法跳过没有值的数组元素,但不会,或者至少不是完全跳过;它将它们视为其值是空字符串。因此,您将获得每个数组元素之间的零字符(或任何“z”)的副本;这就是为什么那里有一个。length
undefined
.join()
+ 1
用法示例:
pad(10, 4); // 0010
pad(9, 4); // 0009
pad(123, 4); // 0123
pad(10, 4, '-'); // --10
function padToFour(number) {
if (number<=9999) { number = ("000"+number).slice(-4); }
return number;
}
类似的东西?
奖金难以理解但更光滑的单行ES6版本:
let padToFour = number => number <= 9999 ? `000${number}`.slice(-4) : number;
ES6isms:
let
是块范围的变量(与 的函数作用域相反)var
=>
是一个箭头函数,除其他事项外,它替换并附加其参数function
number =>
)return
return