Introducción a str_pad
Muchas veces se necesita rellenar un string con otro string en JavaScript, para lograr este objetivo existe una función muy útil en PHP llamada str_pad, esta función es capaz de rellenar un string usando otro string para que el mismo alcance una longitud determinada, de esta manera podemos hacer que un dato específico en nuestro código siempre tenga la misma longitud, por ejemplo:
echo str_pad('20', 6, '0', STR_PAD_LEFT);
echo str_pad('1', 6, '0', STR_PAD_LEFT);
echo str_pad('567', 6, '0', STR_PAD_LEFT);
echo str_pad('4589', 6, '0', STR_PAD_LEFT);
//Resultado:
//000020
//000001
//000567
//004589
Implementación de str_pad en JavaScript
Normalmente para lograr esto en JavaScript muchos siempre hemos utilizado un ciclo o bucle como el siguiente:
function str_pad(str, pad_length, pad_string, pad_type){
var len = pad_length - str.length;
if(len < 0) return str;
for(var i = 0; i < len; i++){
if(pad_type == "STR_PAD_LEFT"){
str = pad_string + str;
}else{
str += pad_string;
}
}
return str;
}
Clase Array
Pero se puede lograr de una manera más sencilla, usando el objeto Array este proceso será más rápido y no habrá necesidad de crear un bucle.
Un Array lo podemos instanciar de muchas maneras:
// Crear un array vacío
var my_array = new Array();
var my_array = [];
// Crear un array con elementos
var my_array = new Array("a", "b", "c");
var my_array = ["a", "b", "c"];
// Crear un array con una longitud determinada pero que no contiene elementos
var my_array = new Array(3);
Método join del objeto Array
Teniendo el Array instanciado podemos usar el método join para convertirlo en una cadena de texto formada por sus elementos unidos por el parámetro que se le haya enviado a dicho método:
var my_array = ["a", "b", "c"];
var my_string = my_array.join("-");
console.log(my_string);
//Resultado "a-b-c"
Función final de str_pad en JavaScript
Teniendo esto claro, si podemos crear un Array sin elementos de una longitud determinada después podemos acceder al método join para crear una cadena de la misma longitud que dicho Array menos uno, ya que al ser un Array sin elementos sólo tomará en cuenta el parámetro de unión.
function str_pad(str, pad_length, pad_string, pad_type){
var len = pad_length - str.length;
if(len < 0) return str;
var pad = new Array(len + 1).join(pad_string);
if(pad_type == "STR_PAD_LEFT") return pad + str;
return str + pad;
}
Uso de la función
console.log str_pad("20", 6, "0", "STR_PAD_LEFT");
console.log str_pad("1", 6, "0", "STR_PAD_LEFT");
console.log str_pad("567", 6, "0", "STR_PAD_LEFT");
console.log str_pad("4589", 6, "0", "STR_PAD_LEFT");
//Resultado:
//000020
//000001
//000567
//004589
Con la llegada de ECMAScript 2015, podemos utilizar el método repeat del objeto String para repetir una cadena un número determinado de veces.
Puedes situar fragmentos de código dentro de etiquetas <pre></pre> y código HTML o XML entre etiquetas <xmp></xmp>.