Tres formas de repetir una cadena en JavaScript

En este artículo, explicaré cómo resolver el desafío "Repetir una cadena, repetir una cadena " de freeCodeCamp . Esto implica repetir una cadena un cierto número de veces.

Hay tres enfoques que cubriré:

  1. usando un bucle while
  2. usando recursividad
  3. usando el método ES6 repeat ()

Descripción del desafío del algoritmo

Repite una cadena dada (primer argumento) numveces (segundo argumento). Devuelve una cadena vacía si numno es un número positivo.
function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);

Casos de prueba proporcionados

repeatStringNumTimes("*", 3) should return "***". repeatStringNumTimes("abc", 3) should return "abcabcabc". repeatStringNumTimes("abc", 4) should return "abcabcabcabc". repeatStringNumTimes("abc", 1) should return "abc". repeatStringNumTimes("*", 8) should return "********". repeatStringNumTimes("abc", -2) should return "".

Enfoque n. ° 1: repetir una cuerda con un bucle while

Una instrucción while ejecuta su instrucción siempre que una condición especificada se evalúe como verdadera.

Una declaración while se ve así:

while (condition) statement

con una condición que se evalúa antes de cada pasada por el bucle. Si la condición es verdadera, se ejecuta la declaración. Si la condición es falsa, la ejecución continúa con cualquier declaración después del ciclo while.

La declaración se ejecuta siempre que la condición sea verdadera. Esta es la solucion:

 function repeatStringNumTimes(string, times) { // Step 1. Create an empty string that will host the repeated string var repeatedString = ""; // Step 2. Set the While loop with (times > 0) as the condition to check while (times > 0) { // As long as times is greater than 0, the statement is executed // The statement repeatedString += string; // Same as repeatedString = repeatedString + string; times--; // Same as times = times - 1; } /* While loop logic Condition T/F repeatedString += string repeatedString times First iteration (3 > 0) true "" + "abc" "abc" 2 Second iteration (2 > 0) true "abc" + "abc" "abcabc" 1 Third iteration (1 > 0) true "abcabc" + "abc" "abcabcabc" 0 Fourth iteration (0 > 0) false } */ // Step 3. Return the repeated string return repeatedString; // "abcabcabc" } repeatStringNumTimes("abc", 3);

Y nuevamente, sin comentarios:

function repeatStringNumTimes(string, times) { var repeatedString = ""; while (times > 0) { repeatedString += string; times--; } return repeatedString; } repeatStringNumTimes("abc", 3);

Enfoque n. ° 2: repetir una cadena usando un condicional y una recursividad

La recursividad es una técnica para iterar sobre una operación haciendo que una función se llame a sí misma repetidamente hasta que llegue a un resultado. Hay algunas características clave de la recursividad que deben incluirse para que funcione correctamente.

  • El primero es un caso base : esta es una declaración, generalmente dentro de una cláusula condicional como if, que detiene la recursividad.
  • El segundo es un caso recursivo : esta es la declaración en la que la función recursiva se invoca sobre sí misma.

Esta es la solucion:

function repeatStringNumTimes(string, times) { // Step 1. Check if times is negative and return an empty string if true if (times  if (times === 1) return string; 4th call 0 "" => if (times <= 0) return ""; Second part of the recursion method 4th call will return "" 3rd call will return "abc" 2nd call will return "abc" 1st call will return "abc" The final call is a concatenation of all the strings return "abc" + "abc" + "abc"; // return "abcabcabc"; */ } repeatStringNumTimes("abc", 3);

Y nuevamente, sin comentarios:

function repeatStringNumTimes(string, times) { if(times < 0) return ""; if(times === 1) return string; else return string + repeatStringNumTimes(string, times - 1); } repeatStringNumTimes("abc", 3);

Enfoque n. ° 3: Repita una cadena usando el método repeat () de ES6

Para esta solución, usará el método String.prototype.repeat ():

  • El repeat()método construye y devuelve una nueva cadena que contiene el número especificado de copias de la cadena en la que se llamó, concatenadas juntas.

Esta es la solucion:

 function repeatStringNumTimes(string, times) { //Step 1. If times is positive, return the repeated string if (times > 0) { // (3 > 0) => true return string.repeat(times); // return "abc".repeat(3); => return "abcabcabc"; } //Step 2. Else if times is negative, return an empty string if true else { return ""; } } repeatStringNumTimes("abc", 3);

Y nuevamente, sin comentarios:

function repeatStringNumTimes(string, times) { if (times > 0) return string.repeat(times); else return ""; } repeatStringNumTimes("abc", 3);

Puede usar un operador ternario como atajo para la instrucción if / else, como este:

times > 0 ? string.repeat(times) : "";

Esto se puede leer como:

if (times > 0) { return string.repeat(times); } else { return ""; }

Luego puede devolver el operador ternario en su función:

Espero que hayas encontrado esto util. Esto es parte de mi serie de artículos “Cómo resolver algoritmos FCC” sobre los desafíos de algoritmos de freeCodeCamp, donde propongo varias soluciones y explico paso a paso lo que sucede bajo el capó.

Dos formas de confirmar el final de una cadena en JavaScript

En este artículo, explicaré cómo resolver el desafío "Confirmar el final" de freeCodeCamp.

Tres formas de invertir una cadena en JavaScript

Este artículo se basa en la secuencia de comandos del algoritmo básico de Free Code Camp "Reverse una cadena"

Tres formas de factorializar un número en JavaScript

Este artículo se basa en la secuencia de comandos del algoritmo básico de Free Code Camp "Factorializar un número"

Dos formas de buscar palíndromos en JavaScript

Este artículo se basa en el Scripting del algoritmo básico de Free Code Camp "Comprobar palíndromos".

Tres formas de encontrar la palabra más larga de una cadena en JavaScript

Este artículo se basa en la secuencia de comandos del algoritmo básico de Free Code Camp "Encuentra la palabra más larga en una cadena".

Tres formas de poner un título a una oración en JavaScript

Este artículo se basa en la secuencia de comandos del algoritmo básico de Free Code Camp “Título de caso una oración”.

Si tiene su propia solución o alguna sugerencia, compártala a continuación en los comentarios.

O puedes seguirme en Medium , Twitter, Github y LinkedIn , justo después de hacer clic en el corazón verde a continuación ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Recursos adicionales

  • while loop - MDN
  • método repeat () - MDN
  • recursividad - MDN
  • Operador ternario - MDN