Drei Möglichkeiten, eine Zeichenfolge in JavaScript zu wiederholen

In diesem Artikel werde ich erklären, wie Sie die Herausforderung "Wiederholen eines Strings, Wiederholen eines Strings " von freeCodeCamp lösen . Dabei wird eine Zeichenfolge eine bestimmte Anzahl von Malen wiederholt.

Es gibt drei Ansätze, die ich behandeln werde:

  1. mit einer while-Schleife
  2. mit Rekursion
  3. mit der ES6 repeat () Methode

Die Beschreibung der Algorithmus-Herausforderung

Wiederholen Sie eine bestimmte Zeichenfolge (erstes Argument) nummal (zweites Argument). Gibt eine leere Zeichenfolge zurück, wenn numes sich nicht um eine positive Zahl handelt.
function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);

Bereitgestellte Testfälle

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

Ansatz 1: Wiederholen Sie einen String mit einer While-Schleife

Eine while-Anweisung führt ihre Anweisung aus, solange eine angegebene Bedingung als wahr ausgewertet wird.

Eine while-Anweisung sieht folgendermaßen aus:

while (condition) statement

mit einer Bedingung, die vor jedem Durchlauf durch die Schleife ausgewertet wird. Wenn die Bedingung erfüllt ist, wird die Anweisung ausgeführt. Wenn die Bedingung falsch ist, wird die Ausführung mit einer Anweisung nach der while-Schleife fortgesetzt.

Die Anweisung wird ausgeführt, solange die Bedingung erfüllt ist. Hier ist die Lösung:

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

Und wieder ohne Kommentare:

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

Ansatz 2: Wiederholen Sie eine Zeichenfolge mit einer Bedingung und einer Rekursion

Rekursion ist eine Technik zum Durchlaufen einer Operation, indem ein Funktionsaufruf wiederholt ausgeführt wird, bis ein Ergebnis erzielt wird. Es gibt einige wichtige Merkmale der Rekursion, die enthalten sein müssen, damit sie ordnungsgemäß funktioniert.

  • Der erste ist ein Basisfall : Dies ist eine Anweisung, normalerweise innerhalb einer Bedingungsklausel wie if, die die Rekursion stoppt.
  • Der zweite ist ein rekursiver Fall : Dies ist die Anweisung, bei der die rekursive Funktion für sich selbst aufgerufen wird.

Hier ist die Lösung:

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

Und wieder ohne Kommentare:

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

Ansatz 3: Wiederholen Sie einen String mit der ES6-Methode repeat ()

Für diese Lösung verwenden Sie die Methode String.prototype.repeat ():

  • Die repeat()Methode erstellt eine neue Zeichenfolge, die die angegebene Anzahl von Kopien der Zeichenfolge enthält, für die sie aufgerufen wurde, und gibt sie zusammen.

Hier ist die Lösung:

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

Und wieder ohne Kommentare:

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

Sie können einen ternären Operator als Verknüpfung für die if / else-Anweisung verwenden:

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

Dies kann gelesen werden als:

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

Sie können dann den ternären Operator in Ihrer Funktion zurückgeben:

Ich hoffe, Sie fanden das hilfreich. Dies ist Teil meiner Artikelserie „Wie man FCC-Algorithmen löst“ zu den Herausforderungen des freeCodeCamp-Algorithmus, in der ich verschiedene Lösungen vorschlage und Schritt für Schritt erkläre, was unter der Haube passiert.

Zwei Möglichkeiten, um das Ende eines Strings in JavaScript zu bestätigen

In diesem Artikel werde ich erklären, wie Sie die Herausforderung „Confirm the Ending“ von freeCodeCamp lösen können.

Drei Möglichkeiten, einen String in JavaScript umzukehren

Dieser Artikel basiert auf dem Free Algorithmus Camp Basic Algorithm Scripting „Reverse a String“.

Drei Möglichkeiten, eine Zahl in JavaScript zu faktorisieren

Dieser Artikel basiert auf dem Free Algorithmus Camp Basic Algorithm Scripting „Factorialize a Number“.

Zwei Möglichkeiten, in JavaScript nach Palindromen zu suchen

Dieser Artikel basiert auf dem Free Code Camp Basic Algorithm Scripting „Auf Palindrome prüfen“.

Drei Möglichkeiten, das längste Wort in einer Zeichenfolge in JavaScript zu finden

This article is based on Free Code Camp Basic Algorithm Scripting “Find the Longest Word in a String”.

Three Ways to Title Case a Sentence in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Title Case a Sentence”.

If you have your own solution or any suggestions, share them below in the comments.

Or you can follow me on Medium, Twitter, Github and LinkedIn, right after you click the green heart below ;-)

‪#‎StayCurious‬, ‪#‎KeepOnHacking‬ & ‪#‎MakeItHappen‬!

Additional Resources

  • while loop — MDN
  • repeat() method — MDN
  • recursion — MDN
  • Ternary Operator — MDN