JavaScript'te bir sayıyı baştaki sıfırlarla doldurma

JavaScript'te dolguya ihtiyacım var.

Örneğin, 9 sayısına sahipsem, "0009" olacaktır. Eğer 10 gibi bir sayıya sahipsem, bu "0010" olacaktır. Her zaman nasıl dört basamak içerdiğine dikkat edin.

Bunu yapmanın bir yolu, koymam gereken 0 sayısını elde etmek için sayıyı eksi 4'ten çıkarmak olabilir.

Bunu yapmanın daha kolay bir yolu var mı?

Şimdiye kadar çok fazla "slick" olmadı:

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

Bir diziyi bir sayı ile başlattığınızda, uzunluğu bu değere ayarlanmış bir dizi oluşturur, böylece dizi o kadar tanımlanmamış eleman içeriyormuş gibi görünür. Bazı Array örnek yöntemleri değeri olmayan dizi elemanlarını atlasa da, .join() bunu yapmaz ya da en azından tam olarak yapmaz; bu elemanlara değerleri boş dizeymiş gibi davranır. Böylece, her bir dizi elemanı arasında sıfır karakterinin (ya da "z" her ne ise) bir kopyasını alırsınız; bu yüzden orada bir + 1 vardır.

Örnek kullanım:

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

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

function padToFour(number) {
  if (number`, diğer şeylerin yanı sıra `function` yerine geçen ve parametrelerinin önüne eklenen bir ok fonksiyonudur
 - Bir ok fonksiyonu tek bir parametre alıyorsa parantezleri atlayabilirsiniz (dolayısıyla `number =>`)
 - Eğer bir ok fonksiyonunun gövdesinde `return` ile başlayan tek bir satır varsa, parantezleri ve `return` anahtar kelimesini atlayabilir ve sadece şu ifadeyi kullanabilirsiniz
 - Fonksiyon gövdesini tek bir satıra indirmek için hile yaptım ve üçlü bir ifade kullandım
Yorumlar (10)

Dene:

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

Şimdi test et:

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]


ECMAScript 8**'de, aşağıdaki sözdizimine sahip yeni padStart ve padEnd yöntemlerine sahibiz.

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

Yani şimdi kullanabiliriz

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