Τρεις τρόποι για να επαναλάβετε μια συμβολοσειρά σε JavaScript

Σε αυτό το άρθρο, θα εξηγήσω τον τρόπο επίλυσης της πρόκλησης «Επαναλάβετε μια συμβολοσειρά επαναλάβετε μια συμβολοσειρά » του freeCodeCamp . Αυτό περιλαμβάνει την επανάληψη μιας συμβολοσειράς ορισμένες φορές.

Υπάρχουν οι τρεις προσεγγίσεις που θα καλύψω:

  1. χρησιμοποιώντας λίγο βρόχο
  2. χρησιμοποιώντας αναδρομή
  3. χρησιμοποιώντας τη μέθοδο επανάληψης ES6 ()

Η περιγραφή του Αλγόριθμου Πρόκληση

Επαναλάβετε μια δεδομένη συμβολοσειρά (πρώτο όρισμα) numφορές (δεύτερο όρισμα). Επιστρέψτε μια κενή συμβολοσειρά εάν numδεν είναι θετικός αριθμός.
function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);

Παρέχονται δοκιμές

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: Επαναλάβετε μια συμβολοσειρά με βρόχο While

Μια δήλωση ενώ εκτελείται η δήλωσή της, εφόσον μια συγκεκριμένη συνθήκη αξιολογείται ως αληθής.

Η δήλωση για λίγο μοιάζει με αυτό:

while (condition) statement

με μια κατάσταση που αξιολογείται πριν από κάθε διέλευση του βρόχου Εάν η συνθήκη είναι αληθής, η δήλωση εκτελείται. Εάν η συνθήκη είναι λανθασμένη, η εκτέλεση συνεχίζεται με οποιαδήποτε δήλωση μετά το βρόχο while.

Η δήλωση εκτελείται αρκεί η συνθήκη να ισχύει. Εδώ είναι η λύση:

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

Και πάλι, χωρίς σχόλια:

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

Προσέγγιση # 2: Επαναλάβετε μια συμβολοσειρά χρησιμοποιώντας μια υπό όρους και επανάληψη

Η επανάληψη είναι μια τεχνική για επανάληψη μιας λειτουργίας, κάνοντας μια συνάρτηση να καλείται επανειλημμένα μέχρι να φτάσει σε ένα αποτέλεσμα. Υπάρχουν μερικά βασικά χαρακτηριστικά της αναδρομής που πρέπει να συμπεριληφθούν για να λειτουργήσει σωστά.

  • Η πρώτη είναι μια βασική περίπτωση : αυτή είναι μια δήλωση, συνήθως μέσα σε μια υπό όρους ρήτρα όπως if, η οποία σταματά την επανάληψη.
  • Το δεύτερο είναι μια αναδρομική περίπτωση : αυτή είναι η δήλωση όπου καλείται η αναδρομική συνάρτηση.

Εδώ είναι η λύση:

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

Και πάλι, χωρίς σχόλια:

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

Προσέγγιση # 3: Επαναλάβετε μια συμβολοσειρά χρησιμοποιώντας τη μέθοδο επανάληψης () ES6

Για αυτήν τη λύση, θα χρησιμοποιήσετε τη μέθοδο String.prototype.repeat ():

  • Η repeat()μέθοδος κατασκευάζει και επιστρέφει μια νέα συμβολοσειρά που περιέχει τον καθορισμένο αριθμό αντιγράφων της συμβολοσειράς στην οποία κλήθηκε, συνενώθηκε μαζί.

Εδώ είναι η λύση:

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

Και πάλι, χωρίς σχόλια:

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

Μπορείτε να χρησιμοποιήσετε έναν τριμερή τελεστή ως συντόμευση για τη δήλωση if / else, όπως αυτό:

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

Αυτό μπορεί να διαβαστεί ως:

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

Στη συνέχεια, μπορείτε να επιστρέψετε τον τριμερή τελεστή στη λειτουργία σας:

Ελπίζω να το βρήκατε χρήσιμο. Αυτό είναι μέρος της σειράς των άρθρων μου "Πώς να λύσω τους αλγόριθμους FCC" σχετικά με το FreeCodeCamp Algorithm Challenges, όπου προτείνω αρκετές λύσεις και εξηγώ βήμα-βήμα τι συμβαίνει κάτω από την κουκούλα.

Δύο τρόποι επιβεβαίωσης του τερματισμού μιας συμβολοσειράς σε JavaScript

Σε αυτό το άρθρο, θα σας εξηγήσω πώς να λύσετε την πρόκληση του "Confirm the Ending" του FreeCodeCamp.

Τρεις τρόποι αντιστροφής μιας συμβολοσειράς σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Reverse a String"

Τρεις τρόποι παραγοντοποίησης ενός αριθμού σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Factorialize a Number"

Δύο τρόποι για να ελέγξετε για Palindromes σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Έλεγχος για Palindromes".

Τρεις τρόποι για να βρείτε τη μεγαλύτερη λέξη σε μια συμβολοσειρά σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Βρείτε τη μεγαλύτερη λέξη σε μια συμβολοσειρά".

Τρεις τρόποι για τον τίτλο υπόθεση μια πρόταση σε JavaScript

Αυτό το άρθρο βασίζεται στο σενάριο Free Code Camp Basic Algorithm "Τίτλος Case a Sentence".

Εάν έχετε τη δική σας λύση ή οποιεσδήποτε προτάσεις, μοιραστείτε τις παρακάτω στα σχόλια.

Ή μπορείτε να με ακολουθήσετε στο Medium , Twitter, Github και LinkedIn , αμέσως αφού κάνετε κλικ στην πράσινη καρδιά παρακάτω ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Επιπρόσθετοι πόροι

  • ενώ βρόχος - MDN
  • επανάληψη () μέθοδος - MDN
  • επανάληψη - MDN
  • Ternary Operator - MDN