在JavaScript中,我需要填充。
例如,如果我有数字9,它将是“ 0009”。如果我有10个数字,则为“ 0010”。请注意,它将始终包含四个数字。
一种方法是减去数字减4以获得我需要输入的0。
是否有一种轻松的方法?
在JavaScript中,我需要填充。
例如,如果我有数字9,它将是“ 0009”。如果我有10个数字,则为“ 0010”。请注意,它将始终包含四个数字。
一种方法是减去数字减4以获得我需要输入的0。
是否有一种轻松的方法?
function padToFour(number) {
if (number<=9999) { number = ("000"+number).slice(-4); }
return number;
}
Something like that?
Bonus incomprehensible-but-slicker single-line ES6 version:
let padToFour = number => number <= 9999 ? `000${number}`.slice(-4) : number;
ES6isms:
let
is a block scoped variable (as opposed to var
’s functional scoping)=>
is an arrow function that among other things replaces function
and is prepended by its parametersnumber =>
)return
you can omit the braces and the return
keyword and simply use the expression您可以执行以下操作:
function pad ( num, size ) {
return ( Math.pow( 10, size ) + ~~num ).toString().substring( 1 );
}
编辑:这只是一个函数的基本思想,但是要增加对较大数字(以及无效输入)的支持,可能会更好:
function pad ( num, size ) {
if (num.toString().length >= size) return num;
return ( Math.pow( 10, size ) + Math.floor(num) ).toString().substring( 1 );
}
这有两件事:
Math.floor(num)
代替~~num
将支持更大的数字。有趣的是,我最近不得不这样做。
function padDigits(number, digits) {
return Array(Math.max(digits - String(number).length + 1, 0)).join(0) + number;
}
使用方式如下:
padDigits(9, 4); // "0009"
padDigits(10, 4); // "0010"
padDigits(15000, 4); // "15000"
不漂亮,但有效。
为了娱乐,不要使用循环来创建额外的零: