Három módon ismételhetünk egy karakterláncot a JavaScript-ben

Ebben a cikkben elmagyarázom, hogyan lehet megoldani a freeCodeCamp „Karakterlánc megismétlése sztring megismétlése kihívását. Ez magában foglalja egy karakterlánc bizonyos számú ismétlését.

Három megközelítést tárgyalok:

  1. egy darab hurok segítségével
  2. rekurzió segítségével
  3. ES6 ismétlés () módszerrel

Az algoritmus kihívás leírása

Ismételje meg az adott karakterláncot (első argumentum) numegyszer (második argumentum). Ha numnem pozitív szám, adjon meg egy üres karakterláncot .
function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);

Biztosított tesztesetek

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

1. megközelítés: Ismételje meg a karakterláncot egy hurokkal

A while utasítás végrehajtja az utasítását, amíg egy megadott feltétel igaznak értékeli.

Egy ideig a kijelentés így néz ki:

while (condition) statement

egy olyan feltétellel, amelyet kiértékelnek a hurok minden egyes áthaladása előtt. Ha a feltétel igaz, akkor az utasítás végrehajtásra kerül. Ha a feltétel hamis, a végrehajtás bármely utasítással folytatódik a while ciklus után.

Az utasítás addig hajtódik végre, amíg a feltétel igaz. Itt van a megoldás:

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

És még egyszer, megjegyzések nélkül:

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

2. megközelítés: Ismételje meg a karakterláncot egy feltételes és rekurzió használatával

A rekurzió egy művelet ismétlési technikája azáltal, hogy egy függvény ismételten meghívja magát, amíg el nem éri az eredményt. A rekurziónak néhány kulcsfontosságú jellemzője szerepel, amelyeket a megfelelő működés érdekében be kell illeszteni.

  • Az első egy alapeset : ez egy olyan utasítás, általában egy feltételes záradékban, mint például if, amely megállítja a rekurziót.
  • A második rekurzív eset : ez az az állítás, ahol a rekurzív függvényt magára hívja.

Itt van a megoldás:

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

És még egyszer, megjegyzések nélkül:

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

3. megközelítés: Ismételje meg a karakterláncot az ES6 repeat () módszerrel

Ehhez a megoldáshoz a String.prototype.repeat () metódust fogja használni:

  • A repeat()metódus egy új karakterláncot készít és ad vissza, amely tartalmazza a megadott számú példányt a stringből, amelyre hívták, összefűzve.

Itt van a megoldás:

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

És még egyszer, megjegyzések nélkül:

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

A ternary operátort használhatja az if / else utasítás parancsikonjaként, így:

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

Ez így olvasható:

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

Ezután visszaadhatja a háromszintű operátort a függvényében:

Remélem, hasznosnak találta ezt. Ez része a freeCodeCamp Algorithm Challenges című „Hogyan lehet megoldani az FCC algoritmusokat” című cikksorozatomnak, ahol számos megoldást javaslok, és lépésről lépésre elmagyarázom, mi történik a motorháztető alatt.

Kétféle módon erősítheti meg a String végét a JavaScript-ben

Ebben a cikkben elmagyarázom, hogyan lehet megoldani a freeCodeCamp „Vége megerősítése” kihívását.

Három módszer a karakterlánc megfordítására a JavaScript-ben

Ez a cikk a Free Code Camp algoritmus-szkriptjein alapul, „Fordítsa meg a karakterláncot”

Három módszer a szám ténylegesítésére a JavaScript-ben

Ez a cikk a Free Code Camp algoritmus-szkriptjein alapszik: „Számok ténylegesítése”

Kétféle módja annak, hogy ellenőrizze a palindromokat a JavaScript-ben

Ez a cikk a Free Code Camp Basic Algorithm Scripting „Palindromes ellenőrzése” alapján készült.

Három módszer a leghosszabb szó megkeresésére egy stringben a JavaScript-ben

Ez a cikk a Free Code Camp algoritmus-szkriptjein alapul: „Keresse meg a leghosszabb szót egy karakterláncban”.

Három módszer a mondat elnevezésére a JavaScript-ben

Ez a cikk a „Free Code Camp Basic Algorithm Scripting“ Title Case a Sentence ”címen alapul.

Ha van saját megoldása vagy javaslata, ossza meg őket alább a megjegyzésekben.

Vagy akkor utánam a Medium , Twitter, GitHub és LinkedIn , jobb kattintás után a zöld szívében alábbi ;-)

# StayCurious, # KeepOnHacking és # MakeItHappen!

További források

  • míg hurok - MDN
  • ismétlés () módszer - MDN
  • rekurzió - MDN
  • Ternary Operator - MDN