JavaScriptでゼロパディング

sliceを利用したゼロパディング

ワンライナーで書ける有名な方法です。 ただ、後ろからn文字を取得しているだけなので出力される桁数が固定されてしまい、入力された数の桁が指定より大きくなると期待する値が取得できません。

//3桁の数をゼロパディング
var number = 123;

console.log(("00000"+number).slice(-5)); //00123

//大きい桁の数が入力されると指定された桁数しか取得できない
var number = 123456;

console.log(("00000"+number).slice(-5)); //23456

Internationalization APIを利用したゼロパディング

Internationalization API を使用したゼロパディングです。 こちらは桁数が増えても大丈夫ですが、21桁までしか出力できません。 ブラウザの対応具合も問題で、IEは11から対応。SafariAndroidは現時点(2015/1/15)では対応していないようです。 安心して使えるようになるにはまだ少し時間がかかりそうです。

var number = 123,    
    locale = "ja-JP",
    options = {
        //出力する桁数を指定
        minimumIntegerDigits : 5,
        //falseを指定しないとja-JPでは3桁毎のカンマ区切りで出力される
        useGrouping : false
     },
     padLeftZero = Intl.NumberFormat(locale, options).format;

     console.log(padLeftZero(number)); //00032
     console.log(number.toLocaleString(locale, options)); //00032     

//大きい桁を入力したらそのまま出力される
var number = 123456;
console.log(padLeftZero(number)); //1243456