domingo, 24 de abril de 2016

JavaScript. Repetir una cadena n veces

En ocasiones nos encontramos con la necesidad de crear una cadena que sea el resultado de concatenar n veces un carácter u otra cadena más corta.

Evidentemente podemos realizar esta concatenación utilizando un bucle:

    var result = '';
    for (var i = 0; i < number; i++) {
        result += stringToRepeat;
    }
 

Pero ¿existe otra manera de hacerlo?

Sí, podemos hacerlo utilizando el método join del objeto Array.

El método join concatena todos los elementos de un Array en una cadena, aceptando como parámetro una cadena a utilizar como separador.

Si los elementos del Array son vacíos e indicamos la cadena a repetir como separador ya tenemos nuestro método para repetir cadenas:

 var result = Array(number + 1).join(stringToRepeat);
 

Debemos fijarnos en que el número de elementos del Array debe ser uno más del número de repeticiones deseadas. Esto es porque estamos utilizando la cadena a repetir como separador de los elementos así que si hay dos elementos habrá un separador entre ellos, si hay tres elementos dos separador, si hay cuatro elementos tres separadores, etc.

Otra opción muy interesante es la que nos proporciona la librería lodash que implementa un método repeat:

 var result = _.repeat(stringToRepeat, number);
 

Aunque todo esto dejará de ser necesario en ECMAScript 6 (o ECMAScript 2015) en cuya definición el objeto String cuenta con un método repeat. Con lo que el código nos quedaría como:

 var result = stringToRepeat.repeat(number);
 

Simplemente habrá que esperar a que lo implementen todos los navegadores.



No hay comentarios:

Publicar un comentario