Tre måder at gentage en streng i JavaScript

I denne artikel vil jeg forklare, hvordan man løser freeCodeCamp's "Gentag en streng gentag en streng " -udfordring . Dette indebærer at gentage en streng et bestemt antal gange.

Der er de tre tilgange, jeg vil dække:

  1. ved hjælp af en while-løkke
  2. ved hjælp af rekursion
  3. ved hjælp af ES6 gentagelsesmetode ()

Algoritmeudfordringsbeskrivelsen

Gentag en given streng (første argument) numgange (andet argument). Returner en tom streng, hvis numdet ikke er et positivt tal.
function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);

Medfølgende testtilfælde

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 "".

Tilgang nr. 1: Gentag en streng med en While-løkke

Et stykke tid udsagn udfører sit udsagn, så længe en bestemt tilstand vurderes til sand.

Et stykke tid udsagn ser sådan ud:

while (condition) statement

med en tilstand, der evalueres før hver passage gennem løkken. Hvis betingelsen er sand, udføres erklæringen. Hvis betingelsen er falsk, fortsætter udførelsen med enhver erklæring efter while-sløjfen.

Erklæringen udføres, så længe betingelsen er sand. Her er løsningen:

 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);

Og igen uden kommentarer:

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

Tilgang # 2: Gentag en streng ved hjælp af en betinget og rekursion

Rekursion er en teknik til at gentage en operation ved at lade en funktion kalde sig gentagne gange, indtil den når frem til et resultat. Der er et par nøglefunktioner i rekursion, der skal medtages for at den kan fungere korrekt.

  • Den første er en basissag : dette er en erklæring, normalt inden for en betinget klausul som if, der stopper rekursionen.
  • Det andet er et rekursivt tilfælde : dette er udsagnet, hvor den rekursive funktion kaldes på sig selv.

Her er løsningen:

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);

Og igen uden kommentarer:

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

Fremgangsmåde # 3: Gentag en streng ved hjælp af ES6 gentagelsesmetode ()

Til denne løsning bruger du metoden String.prototype.repeat ():

  • De repeat()metode konstruktioner og returnerer en ny streng, som indeholder den angivne antal kopier af strengen, hvor den blev kaldt, sammenkædet.

Her er løsningen:

 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);

Og igen uden kommentarer:

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

Du kan bruge en ternær operator som en genvej til if / else-sætningen, som denne:

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

Dette kan læses som:

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

Du kan derefter returnere den ternære operatør i din funktion:

Jeg håber, du fandt dette nyttigt. Dette er en del af min serie "How to Solve FCC Algorithms" om freeCodeCamp Algorithm Challenges, hvor jeg foreslår flere løsninger og forklarer trin for trin, hvad der sker under emhætten.

To måder at bekræfte afslutningen på en streng i JavaScript

I denne artikel forklarer jeg, hvordan man løser freeCodeCamp's "Confirm the Ending" -udfordring.

Tre måder at vende en streng i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting “Vend en streng”

Tre måder at faktorisere et nummer i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting “Faktoriser et tal”

To måder at kontrollere palindromer i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting “Check for Palindromes”.

Tre måder at finde det længste ord i en streng i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting "Find det længste ord i en streng".

Tre måder at betegne sag på en sætning i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting "Titel sag en sætning".

Hvis du har din egen løsning eller forslag, så del dem nedenfor i kommentarerne.

Eller du kan følge mig på Medium , Twitter, Github og LinkedIn lige efter at du har klikket på det grønne hjerte nedenfor ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Yderligere ressourcer

  • while loop - MDN
  • gentag () metode - MDN
  • rekursion - MDN
  • Ternær operatør - MDN