Een getal opvullen met nullen in JavaScript

In JavaScript, moet ik padding hebben.

Bijvoorbeeld, als ik het nummer 9 heb, zal het "0009" zijn. Als ik een getal van bijvoorbeeld 10 heb, wordt het "0010". Merk op dat het altijd vier cijfers zal bevatten.

Een manier om dit te doen is door het getal min 4 af te trekken om het aantal 0's te krijgen dat ik moet plaatsen.

Is er een snellere manier om dit te doen?

Tot nu toe is er niet veel moois aan de hand:

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

Als je een array initialiseert met een getal, dan wordt er een array gemaakt met de lengte ingesteld op die waarde, zodat het lijkt of de array zoveel onbepaalde elementen bevat. Hoewel sommige Array instance methods array-elementen zonder waarden overslaan, doet .join() dat niet, of in ieder geval niet helemaal; het behandelt ze alsof hun waarde de lege string is. Dus krijg je een kopie van het nulteken (of wat "z" ook is) tussen elk van de array-elementen; dat'is waarom er een + 1 in zit.

Voorbeeld gebruik:

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

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

function padToFour(number) {
  if (number` is een pijl functie die onder andere `function` vervangt en wordt voorafgegaan door zijn parameters
 - Als een pijl functie een enkele parameter heeft kun je de haakjes weglaten (vandaar `getal =>`)
 - Als een pijl functie een enkele regel heeft die begint met `return`, kun je de accolades en het `return` sleutelwoord weglaten en gewoon de expressie gebruiken
 - Om het functiegedeelte op één regel te krijgen heb ik vals gespeeld en een ternaire expressie gebruikt
Commentaren (10)

Probeer het:

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

Test nu:

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]


In ECMAScript 8 , hebben we nieuwe methode padStart en padEnd die onderstaande syntaxis heeft.

'string'.padStart(targetLength [,padString]):

Dus nu kunnen we gebruik maken van

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