Kolm viisi stringi kordamiseks JavaScriptis

Selles artiklis selgitan, kuidas lahendada freeCodeCampi väljakutse "Korda stringi kordus string " . See hõlmab stringi kordamist teatud arv kordi.

Käsitlen kolme lähenemisviisi:

  1. kasutades mõnda aega silmust
  2. rekursiooni abil
  3. kasutades ES6 korduse () meetodit

Algoritmi väljakutse kirjeldus

Korrake antud stringi (esimene argument) numkorda (teine ​​argument). Tagastage tühi string, kui numsee pole positiivne arv.
function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);

Pakutakse testjuhtumeid

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

Lähenemine nr 1: korrake stringi aasaga

Aasta lause täidab oma avalduse seni, kuni määratud tingimus vastab tõele.

Mõni aeg avaldus näeb välja selline:

while (condition) statement

tingimusega, mida hinnatakse enne iga silmuse läbimist. Kui tingimus on tõene, täidetakse lause. Kui tingimus on vale, jätkatakse käivitamist mis tahes lausega pärast while-tsüklit.

Avaldus täidetakse seni, kuni tingimus on tõene. Siin on lahendus:

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

Ja jällegi ilma kommentaarideta:

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

Lähenemine nr 2: korrake stringi tingimusliku ja rekursiooni abil

Rekursioon on toimingu kordamise tehnika, mille korral funktsioon kutsub ennast korduvalt, kuni see tulemuseni jõuab. Rekursiooni korralikuks toimimiseks tuleb lisada mõned rekursiooni põhijooned.

  • Esimene on baasjuhtum : see on lause, tavaliselt sellise tingimuslause sees nagu if, mis peatab rekursiooni.
  • Teine on rekursiivne juhtum : see on lause, kus rekursiivset funktsiooni kutsutakse ise.

Siin on lahendus:

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

Ja jällegi ilma kommentaarideta:

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

Lähenemine nr 3: korrake stringi, kasutades meetodit ES6 repeat ()

Selle lahenduse jaoks kasutate meetodit String.prototype.repeat ():

  • repeat()Meetod ehitab ja naaseb uue string, mis sisaldab kindla arvu koopiate nöör, mille ta kutsuti, konkateneeriti koos.

Siin on lahendus:

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

Ja jällegi ilma kommentaarideta:

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

Lausel if / else saate otseteena kasutada kolmekordset operaatorit :

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

Seda võib lugeda järgmiselt:

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

Seejärel saate kolmefaasilise operaatori oma funktsioonis tagastada:

Loodetavasti leidsite sellest abi. See on osa minu artiklist "Kuidas lahendada FCC algoritme" freeCodeCamp algoritmi väljakutsetest, kus pakun välja mitu lahendust ja selgitan samm-sammult, mis kapoti all toimub.

Kaks võimalust Stringi lõppu kinnitada JavaScriptis

Selles artiklis selgitan, kuidas lahendada freeCodeCampi väljakutse “Kinnita lõppu”.

Kolm viisi stringide ümberpööramiseks JavaScriptis

See artikkel põhineb Free Code Campi algoritmi skriptimisel „Stringi ümberpööramine”

Kolm viisi, kuidas arv JavaScript JavaScriptis kindlaks teha

See artikkel põhineb Free Code Campi algoritmide skriptimisel “Arvu faktoreerimine”

Kaks viisi palindroomide kontrollimiseks JavaScripti abil

See artikkel põhineb Free Code Campi algoritmi skriptimisel „Kontrolli palindroome”.

Kolm viisi, kuidas leida JavaScripti stringi kõige pikem sõna

See artikkel põhineb Free Code Campi algoritmide skriptimisel „Leidke stringi pikim sõna”.

Kolm viisi, kuidas JavaScripti laused pealkirjastada

See artikkel põhineb Free Code Campi algoritmide skriptimisel "Pealkirja juhtum lause".

Kui teil on oma lahendus või ettepanekuid, jagage neid allpool kommentaarides.

Või saate jälgida mind Medium , Twitter, Github ja LinkedIn , kohe pärast klõpsate roheline süda allpool ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Lisaressursid

  • samas silmus - MDN
  • kordus () meetod - MDN
  • rekursioon - MDN
  • Kolmepoolne operaator - MDN