J'ai effectivement eu à venir avec quelque chose comme cela récemment.
Je disais qu'il y avait un moyen de le faire sans l'aide de boucles.
C'est ce que je suis venu avec.
function zeroPad(num, numZeros) {
var n = Math.abs(num);
var zeros = Math.max(0, numZeros - Math.floor(n).toString().length );
var zeroString = Math.pow(10,zeros).toString().substr(1);
if( num < 0 ) {
zeroString = '-' + zeroString;
}
return zeroString+n;
}
Puis il suffit de l'utiliser en fournissant un certain nombre à zéro pad:
> zeroPad(50,4);
"0050"
Si le nombre est plus grand que le rembourrage, le nombre s'étendre au-delà de la marge:
> zeroPad(51234, 3);
"51234"
Les décimales sont trop belle!
> zeroPad(51.1234, 4);
"0051.1234"
Si vous n'avez pas l'esprit de polluer l'espace de noms global, vous pouvez l'ajouter directement le Numéro:
Number.prototype.leftZeroPad = function(numZeros) {
var n = Math.abs(this);
var zeros = Math.max(0, numZeros - Math.floor(n).toString().length );
var zeroString = Math.pow(10,zeros).toString().substr(1);
if( this < 0 ) {
zeroString = '-' + zeroString;
}
return zeroString+n;
}
Et si vous préférez avoir des décimales de l'espace dans la marge:
Number.prototype.leftZeroPad = function(numZeros) {
var n = Math.abs(this);
var zeros = Math.max(0, numZeros - n.toString().length );
var zeroString = Math.pow(10,zeros).toString().substr(1);
if( this < 0 ) {
zeroString = '-' + zeroString;
}
return zeroString+n;
}
Cheers!