Nota: consulte la Actualización 2 si está utilizando la última versión de ECMAScript ...
Aquí una solución que me gustó por su simplicidad de una respuesta a una pregunta similar :
var n = 123
String('00000' + n).slice(-5);
('00000' + n).slice(-5);
ACTUALIZAR
Como sugirió @RWC, por supuesto, puede envolver esto muy bien en una función genérica como esta:
function leftPad(value, length) {
return ('0'.repeat(length) + value).slice(-length);
}
leftPad(123, 5);
Y para aquellos a los que no les gusta la rebanada:
function leftPad(value, length) {
value = String(value);
length = length - value.length;
return ('0'.repeat(length) + value)
}
Pero si el rendimiento importa, recomiendo leer la respuesta vinculada antes de elegir una de las soluciones sugeridas.
ACTUALIZACIÓN 2
En ES6, la clase String ahora viene con un padStartmétodo incorporado que agrega caracteres iniciales a una cadena. Consulte MDN aquí para obtener referencias String.prototype.padStart(). Y también hay un padEndmétodo para terminar personajes.
Entonces, con ES6 se volvió tan simple como:
var n = 123;
n.padStart(5, '0');