Compartir en Twitter
Go to Homepage

CÓMO REPETIR UNA CADENA EN JAVASCRIPT

November 14, 2025

Introducción a la repetición de cadenas en JavaScript

Repetir una cadena un número específico de veces es una tarea común en la programación, especialmente en JavaScript, un lenguaje ampliamente utilizado para desarrollar aplicaciones web. Este tutorial explora tres enfoques diferentes para lograr este objetivo: utilizando un bucle while, recurriendo a la recursión y empleando el método repeat() introducido en ES6. Cada método tiene sus propias ventajas, dependiendo del contexto y los requisitos del proyecto. A lo largo de este artículo, se presentarán ejemplos prácticos, explicaciones paso a paso y casos de prueba para garantizar una comprensión clara de cómo implementar estas soluciones. Este contenido está diseñado para programadores que buscan mejorar sus habilidades en el manejo de cadenas y algoritmos en JavaScript.

Uso de un bucle while para repetir una cadena

El primer enfoque utiliza un bucle while para concatenar una cadena varias veces. Este método es iterativo y se basa en ejecutar un bloque de código mientras una condición específica sea verdadera. En este caso, la condición verifica si el número de repeticiones es mayor que cero. Este enfoque es ideal para quienes prefieren una solución directa y fácil de entender, especialmente en proyectos donde la claridad del código es prioritaria.

El proceso comienza inicializando una cadena vacía que almacenará el resultado. Luego, el bucle while concatena la cadena original al resultado y reduce el contador de repeticiones en cada iteración hasta que este llega a cero. Si el número de repeticiones es negativo, se retorna una cadena vacía para cumplir con los requisitos.

function repetirCadena(string, veces) {
    let cadenaRepetida = "";
    while (veces > 0) {
        cadenaRepetida += string;
        veces--;
    }
    return cadenaRepetida;
}

Por ejemplo, al ejecutar la función con los argumentos "abc", 3, el bucle while realiza las siguientes iteraciones:

  • Primera iteración: cadenaRepetida = "" + "abc" = "abc", veces = 2.
  • Segunda iteración: cadenaRepetida = "abc" + "abc" = "abcabc", veces = 1.
  • Tercera iteración: cadenaRepetida = "abcabc" + "abc" = "abcabcabc", veces = 0.

El resultado final es:

"abcabcabc"

Este método es eficiente para la mayoría de los casos, ya que su complejidad temporal es O(n), donde n es el número de repeticiones. Sin embargo, para cadenas muy largas o un número elevado de repeticiones, la concatenación repetida puede tener un impacto en el rendimiento debido a la creación de nuevas cadenas en cada iteración.

Repetición de una cadena mediante recursión

El segundo enfoque utiliza la recursión en JavaScript, una técnica donde una función se llama a sí misma para resolver un problema. La recursión es útil para problemas que pueden descomponerse en subproblemas más pequeños. En este caso, la función se invoca repetidamente, concatenando la cadena original hasta que se cumple una condición de parada.

Para implementar este método, se definen dos casos base: si el número de repeticiones es negativo, se retorna una cadena vacía; si es igual a uno, se retorna la cadena original. Para cualquier otro caso, la función concatena la cadena con el resultado de llamarse a sí misma con un número de repeticiones reducido en uno.

function repetirCadena(string, veces) {
    if (veces < 0) return "";
    if (veces === 1) return string;
    return string + repetirCadena(string, veces - 1);
}

Por ejemplo, al llamar a repetirCadena("abc", 3), el proceso recursivo se desarrolla así:

  • Primera llamada: veces = 3, retorna "abc" + repetirCadena("abc", 2).
  • Segunda llamada: veces = 2, retorna "abc" + repetirCadena("abc", 1).
  • Tercera llamada: veces = 1, retorna "abc".
  • Combinando: "abc" + "abc" + "abc" = "abcabcabc".

El resultado es:

"abcabcabc"

Aunque elegante, este enfoque tiene limitaciones. La recursión puede provocar un desbordamiento de la pila de llamadas si el número de repeticiones es muy grande, ya que cada llamada agrega una nueva capa a la pila. En navegadores modernos, este problema es menos común, pero sigue siendo una consideración importante para aplicaciones críticas.

Uso del método repeat() de ES6

El tercer enfoque utiliza el método String.prototype.repeat(), introducido en ECMAScript 6 (ES6). Este método es la solución más directa y eficiente para repetir una cadena, ya que está diseñado específicamente para este propósito. La función repeat() toma un número entero como argumento y devuelve una nueva cadena que contiene la cadena original repetida el número especificado de veces.

La implementación es sencilla: si el número de repeticiones es mayor que cero, se utiliza el método repeat(); de lo contrario, se retorna una cadena vacía.

function repetirCadena(string, veces) {
    return veces > 0 ? string.repeat(veces) : "";
}

Por ejemplo, al ejecutar repetirCadena("abc", 3), el método repeat() genera directamente:

"abcabcabc"

El método repeat() es altamente eficiente, ya que está optimizado a nivel nativo en los motores de JavaScript. Su complejidad temporal es generalmente mejor que la concatenación repetida en un bucle, especialmente para cadenas largas. Además, el código es más legible y menos propenso a errores, lo que lo convierte en la opción preferida en la mayoría de los casos modernos.

Una alternativa compacta es usar un operador ternario directamente en la función:

function repetirCadena(string, veces) {
    return veces > 0 ? string.repeat(veces) : "";
}

Este enfoque es equivalente al anterior, pero más conciso. Sin embargo, debe usarse con cuidado para no sacrificar la claridad en proyectos grandes o colaborativos.

Comparación de los tres métodos

Cada uno de los métodos presentados tiene sus propias fortalezas y debilidades, lo que los hace adecuados para diferentes escenarios. A continuación, se analizan las características clave de cada enfoque para ayudarte a elegir el más apropiado según tus necesidades.

El bucle while es robusto y fácil de entender, lo que lo hace ideal para principiantes o para situaciones donde se necesita un control explícito sobre el proceso de repetición. Sin embargo, puede ser menos eficiente para cadenas muy largas debido a la creación repetida de nuevas cadenas en cada concatenación. Este método es útil en entornos donde la compatibilidad con versiones antiguas de JavaScript es una preocupación, ya que no depende de características modernas como repeat().

La recursión ofrece una solución elegante y es adecuada para problemas que se benefician de un enfoque funcional. Sin embargo, su uso debe limitarse a casos donde el número de repeticiones es moderado, para evitar problemas de desbordamiento de la pila. Este método es menos común en aplicaciones prácticas debido a su complejidad y posibles limitaciones de rendimiento.

El método repeat() de ES6 es la opción más moderna y eficiente. Su simplicidad y optimización nativa lo convierten en la elección predeterminada para la mayoría de los proyectos actuales. Es especialmente útil en aplicaciones web donde el rendimiento y la legibilidad son prioritarios. Sin embargo, debe evitarse en entornos que no soporten ES6, aunque esto es raro en 2025, dado que los navegadores modernos y Node.js son totalmente compatibles con esta característica.

Casos de prueba para validar las soluciones

Para garantizar que las funciones cumplan con los requisitos, se pueden probar con diferentes entradas. A continuación, se presentan algunos casos de prueba que cubren escenarios comunes:

  • Repetir el carácter "*" tres veces:
console.log(repetirCadena("*", 3));

Salida:

"***"
  • Repetir la cadena "abc" cuatro veces:
console.log(repetirCadena("abc", 4));

Salida:

"abcabcabcabc"
  • Repetir la cadena "abc" una vez:
console.log(repetirCadena("abc", 1));

Salida:

"abc"
  • Intentar repetir con un número negativo:
console.log(repetirCadena("abc", -2));

Salida:

""

Estos casos aseguran que la función maneje correctamente tanto entradas válidas como casos extremos, como números negativos.

Aplicaciones prácticas de la repetición de cadenas

La repetición de cadenas tiene múltiples aplicaciones en el desarrollo web y la programación en general. Por ejemplo, puede usarse para generar patrones visuales en interfaces de usuario, como barras de progreso basadas en caracteres o separadores en texto. También es útil en la generación de datos de prueba, donde se necesitan cadenas repetidas para simular entradas largas. En el contexto de algoritmos, este tipo de funciones es común en problemas que involucran manipulación de cadenas o formateo de texto.

Un caso práctico es la creación de un patrón de asteriscos para una interfaz de consola:

function crearPatron(asteriscos, veces) {
    return asteriscos.repeat(veces);
}
console.log(crearPatron("*", 5));

Salida:

"*****"

Otro ejemplo es la generación de una cadena repetida para formatear una salida de datos:

function formatearEncabezado(titulo, separador, veces) {
    const linea = separador.repeat(veces);
    return `${linea}\n${titulo}\n${linea}`;
}
console.log(formatearEncabezado("Bienvenido", "=", 10));

Salida:

==========
Bienvenido
==========

Estos ejemplos demuestran cómo la repetición de cadenas puede integrarse en soluciones prácticas para mejorar la presentación o funcionalidad de una aplicación.

Consideraciones de rendimiento

El rendimiento es un factor crítico al elegir un método para repetir cadenas, especialmente en aplicaciones que manejan grandes volúmenes de datos. El bucle while implica múltiples concatenaciones, lo que puede ser costoso en términos de memoria y tiempo de ejecución para cadenas largas, ya que cada concatenación crea una nueva cadena. La recursión tiene un costo adicional debido a las múltiples llamadas a funciones, lo que puede saturar la pila de ejecución en casos extremos. Por otro lado, el método repeat() está optimizado internamente por los motores de JavaScript, lo que reduce significativamente el uso de recursos.

Para ilustrar, si se repite una cadena de 1000 caracteres 1000 veces, el método repeat() será notablemente más rápido que un bucle while o una solución recursiva, especialmente en navegadores modernos como Chrome o Firefox en 2025. Sin embargo, en entornos con restricciones de memoria o compatibilidad, el bucle while puede ser una alternativa viable.

Conclusiones

La repetición de cadenas en JavaScript es una tarea sencilla pero poderosa, con múltiples enfoques que se adaptan a diferentes necesidades. El bucle while ofrece una solución iterativa y comprensible, ideal para principiantes o entornos con restricciones de compatibilidad. La recursión proporciona una perspectiva funcional, aunque debe usarse con precaución debido a posibles limitaciones de rendimiento. El método repeat() de ES6 destaca como la opción más eficiente y moderna, recomendada para la mayoría de los proyectos actuales debido a su simplicidad y optimización. Al elegir un método, considera factores como el tamaño de la cadena, el número de repeticiones, la legibilidad del código y la compatibilidad con el entorno de ejecución. Con estas herramientas, puedes manejar tareas de manipulación de cadenas de manera efectiva y profesional en tus proyectos de programación.