ゼロパディング (zero padding)

次のように、文字数を合わせる方法について考えます。

001
002
...
999

そのためには先頭にゼロを文字として追加し、String.slice()で文字数を合わせます。たとえば3桁にするならば、

( '000' + num ).slice( -3 );

のようにします。このときnumが1ならば、「001」が返されます。

異なる桁数も考えると、

var num = 1;
( '00'  + num ).slice( -2 ); // '01' を返す
( '000' + num ).slice( -3 ); // '001' を返す

のようにします。ただしこの方法では、想定する桁数を超えたときには

var num = 123;
( '00' + num ).slice( -2 ); // '23' を返す

のように上位の桁が失われます。

ところで、先頭に追加するゼロの数を1つ減らして、

( '00' + num ).slice( -3 );

としても通常は問題ありませんが、空文字を指定されると桁数が合わなくなります。

num = 1;
( '00' + num ).slice( -3 ); // '001' を返す

num = '';
( '00' + num ).slice( -3 ); // '00' を返す … 2桁になる