javascriptで数字の0埋め(padding)をする

数字の「12」を「012」のように0埋めたい時

String.prototype.slice()をつかって

var num=12;
result = ("000"+num).slice(-3);// "000"+"12" -> "00"+"012" -> "012" 

のように一旦埋めたい文字列を先頭に連結して後ろから必要な分、部分文字列を切り出すと実現できます。

substrも使えますが負の数の挙動が異なることもある(JScript)ので、lengthから必要な文字列分引いてから指定するか、sliceをつかったほうがしたほうが無難そうです。

var num=12;
result = ("000"+num).substr(-3);

汎用的にはこんな感じかと

var padding = function(num, padBy){
	if(num<0){
		return num;// Negative number is not support.
	}

	num = Math.floor(num);
	padBy = padBy||"00";// default value			
	var numString = ""+num;// cast number type as string
	if(numString.length>padBy.length){// padding不要なほどnumが長い時は何もしない
		return numString;
	}
	var res = "";
	var sliceLength = -padBy.length;
	console.log("sliceLength : "+sliceLength);
	var res = (padBy+num).slice(sliceLength);
	console.log("res : "+res);
	return res;
};

var num = Math.round( Math.random()*150 );
var result = padding(num,"000");
alert(result);