JavaScript で先頭にゼロを付ける [重複] 質問する

JavaScript で先頭にゼロを付ける [重複] 質問する

JavaScript では、パディングが必要です。

たとえば、数字 9 がある場合、それは「0009」になります。たとえば、10 が複数ある場合は、「0010」になります。常に 4 桁の数字が含まれることに注意してください。

これを行う 1 つの方法は、その数値から 4 を引いて、必要な 0 の数を取得することです。

これをもっとうまく行う方法はありますか?

ベストアンサー1

ES2017 アップデート

内蔵のString.prototype.padStart()

n = 9;
String(n).padStart(4, '0'); // '0009'

n = 10;
String(n).padStart(4, '0'); // '0010'

今のところ、あまり「巧妙な」ことは起きていません。

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

配列を数値で初期化すると、lengthその値が設定された配列が作成され、配列にはその数のundefined要素が含まれているように見えます。一部の Array インスタンス メソッドは値のない配列要素をスキップしますが、.join()はスキップしません (少なくとも完全にはスキップしません)。それらの要素の値が空の文字列であるかのように扱います。したがって、各配列要素の間にはゼロ文字 (または "z" が何であれ) のコピーが存在します。これが、 が存在する理由です+ 1

使用例:

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

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

おすすめ記事