Remplir un nombre avec des zéros en tête en JavaScript

En JavaScript, j'ai besoin d'avoir du padding.

Par exemple, si j'ai le nombre 9, il sera de "0009&quot ;. Si j'ai un nombre de disons 10, il sera de "0010&quot ;. Remarquez qu'il contiendra toujours quatre chiffres.

Une façon de procéder serait de soustraire le nombre moins 4 pour obtenir le nombre de 0 que je dois mettre.

Existe-t-il un moyen plus simple de le faire ?

Il n'y a pas beaucoup de "slick" jusqu'à présent :

function pad(n, width, z) {
  z = z || '0';
  n = n + '';
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}

Lorsque vous initialisez un tableau avec un nombre, il crée un tableau avec la length fixée à cette valeur de sorte que le tableau semble contenir autant d'éléments undefined. Bien que certaines méthodes d'instance de Array ignorent les éléments de tableau sans valeur, .join() ne le fait pas, ou du moins pas complètement ; il les traite comme si leur valeur était la chaîne vide. Ainsi, vous obtenez une copie du caractère zéro (ou de ce qu'est "z&quot ;) entre chacun des éléments du tableau ; c'est pourquoi il y a un + 1 là-dedans.

Exemple d'utilisation :

pad(10, 4);      // 0010
pad(9, 4);       // 0009
pad(123, 4);     // 0123

pad(10, 4, '-'); // --10
Commentaires (14)

function padToFour(number) {
  if (number` est une fonction flèche qui remplace entre autres `function` et est précédée de ses paramètres.
 - Si une fonction flèche prend un seul paramètre, vous pouvez omettre les parenthèses (d'où `number =>`).
 - Si le corps d'une fonction flèche a une seule ligne qui commence par `return`, vous pouvez omettre les accolades et le mot-clé `return` et simplement utiliser l'expression.
 - Pour réduire le corps de la fonction à une seule ligne, j'ai triché en utilisant une expression ternaire
Commentaires (10)

Essayez :

String.prototype.lpad = function(padString, length) {
    var str = this;
    while (str.length < length)
        str = padString + str;
    return str;
}

Maintenant, testez :

var str = "5";
alert(str.lpad("0", 4)); //result "0005"
var str = "10"; // note this is string type
alert(str.lpad("0", 4)); //result "0010"

[DEMO][1]


Dans ECMAScript 8 , nous avons une nouvelle méthode [padStart][2] et [padEnd][3] qui a la syntaxe suivante.

'string&#39 ;.padStart(targetLength [,padString]) :

Nous pouvons maintenant utiliser

const str = "5";
str.padStart(4, '0'); // '0005'

[1] : http://jsfiddle.net/4RWAp/1 [2] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart [3] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd

Commentaires (8)