Trois façons de répéter une chaîne en JavaScript

Dans cet article, je vais vous expliquer comment résoudre le défi «Répéter une chaîne répéter une chaîne » de freeCodeCamp . Cela implique de répéter une chaîne un certain nombre de fois.

Il y a les trois approches que je vais couvrir:

  1. en utilisant une boucle while
  2. en utilisant la récursivité
  3. en utilisant la méthode ES6 repeat ()

Description du défi de l'algorithme

Répétez une chaîne donnée (premier argument) numfois (deuxième argument). Renvoie une chaîne vide si ce numn'est pas un nombre positif.
function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);

Cas de test fournis

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

Approche n ° 1: répéter une chaîne avec une boucle While

Une instruction while exécute son instruction tant qu'une condition spécifiée est évaluée à true.

Une déclaration while ressemble à ceci:

while (condition) statement

avec une condition qui est évaluée avant chaque passage dans la boucle. Si la condition est vraie, l'instruction est exécutée. Si la condition est fausse, l'exécution se poursuit avec n'importe quelle instruction après la boucle while.

L'instruction est exécutée tant que la condition est vraie. Voici la solution:

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

Et encore, sans commentaires:

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

Approche n ° 2: répéter une chaîne à l'aide d'un conditionnel et d'une récursivité

La récursivité est une technique pour itérer sur une opération en faisant appeler une fonction elle-même à plusieurs reprises jusqu'à ce qu'elle arrive à un résultat. Il existe quelques fonctionnalités clés de la récursivité qui doivent être incluses pour qu'elle fonctionne correctement.

  • Le premier est un cas de base : il s'agit d'une instruction, généralement dans une clause conditionnelle comme if, qui arrête la récursivité.
  • Le second est un cas récursif : c'est l'instruction où la fonction récursive est appelée sur elle-même.

Voici la solution:

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

Et encore, sans commentaires:

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

Approche n ° 3: Répéter une chaîne en utilisant la méthode ES6 repeat ()

Pour cette solution, vous utiliserez la méthode String.prototype.repeat ():

  • La repeat()méthode construit et renvoie une nouvelle chaîne qui contient le nombre spécifié de copies de la chaîne sur laquelle elle a été appelée, concaténées ensemble.

Voici la solution:

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

Et encore, sans commentaires:

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

Vous pouvez utiliser un opérateur ternaire comme raccourci pour l'instruction if / else, comme ceci:

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

Cela peut être lu comme:

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

Vous pouvez ensuite retourner l'opérateur ternaire dans votre fonction:

J'espère que vous avez trouvé cela utile. Cela fait partie de ma série d'articles «Comment résoudre les algorithmes FCC» sur les défis de l'algorithme freeCodeCamp, où je propose plusieurs solutions et explique étape par étape ce qui se passe sous le capot.

Deux façons de confirmer la fin d'une chaîne en JavaScript

Dans cet article, je vais vous expliquer comment résoudre le défi «Confirmer la fin» de freeCodeCamp.

Trois façons d'inverser une chaîne en JavaScript

Cet article est basé sur le script d'algorithme de base de Free Code Camp "Inverser une chaîne"

Trois façons de factoriser un nombre en JavaScript

Cet article est basé sur le script d'algorithme de base de Free Code Camp "Factorialiser un nombre"

Deux façons de vérifier les palindromes en JavaScript

Cet article est basé sur le scripting d'algorithme de base de Free Code Camp «Check for Palindromes».

Trois façons de trouver le mot le plus long dans une chaîne en JavaScript

Cet article est basé sur le scripting d'algorithme de base de Free Code Camp «Trouver le mot le plus long d'une chaîne».

Trois façons de titrer une phrase en JavaScript

Cet article est basé sur le scripting d'algorithme de base de Free Code Camp «Title Case a Sentence».

Si vous avez votre propre solution ou des suggestions, partagez-les ci-dessous dans les commentaires.

Ou vous pouvez me suivre sur Medium , Twitter, Github et LinkedIn , juste après avoir cliqué sur le cœur vert ci-dessous ;-)

# StayCurious, # KeepOnHacking et # MakeItHappen!

Ressources additionnelles

  • boucle while - MDN
  • méthode repeat () - MDN
  • récursivité - MDN
  • Opérateur ternaire - MDN