Рубрики
Без рубрики

Три способа повторить строку в JavaScript

В этой статье я объясню, как решить FreeCodeCamp’s «Повторить строку повторить строку». Это включает в себя повторение строки определенное количество раз. Существуют три подхода, которые я охвачу: использование некоторого повторения Recuctionsing ES6 Repeat () метод алгоритма вызовы описанияПродушенные заданные строки

В этой статье я объясню, как решить FreeCodeCamp’s « повторить строку повторить строку » вызов. Это включает в себя повторение строки определенное количество раз.

Есть три подхода, я охвативших:

  1. Использование цикла в то время
  2. используя рекурсию
  3. Использование метода ES6 Repeat ()

Описание проблем алгоритма

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: повторите строку с циклом

Оператор Whae выполняет свое утверждение до тех пор, пока указанное условие оценивается к true.

А пока оператор выглядит так:

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: повторите строку с помощью условного и рекурсии

Рекурсия – это методика для итерации по эксплуатации, имея функцию, позвоните себе неоднократно, пока она не прибудет в результате. Существует несколько ключевых функций рекурсии, которые должны быть включены для того, чтобы он был правильно работать.

  • Первый – это Базовый чехол : Это утверждение, как правило, в пределах условного пункта, такого Если , это останавливает рекурсию.
  • Второй – это Рекурсивный случай : Это утверждение, где вызывается рекурсивная функция.

Вот решение:

function repeatStringNumTimes(string, times) {
  // Step 1. Check if times is negative and return an empty string if true
  if (times < 0) {
    return "";
  }
  
  // Step 2. Check if times equals to 1 and return the string itself if it's the case.
  if (times === 1) {
    return string;
  }
  
  // Step 3. Use recursion
  else {
    return string + repeatStringNumTimes(string, times - 1); // return "abcabcabc";
  }
  /* 
    First Part of the recursion method
    You need to remember that you won't have just one call, you'll have several nested calls
                     times       string + repeatStringNumTimes(string, times - 1)
      1st call         3                 "abc" + ("abc", 3 - 1)
      2nd call         2                 "abc" + ("abc", 2 - 1)
      3rd call         1                 "abc" => 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: Повторите строку с помощью Repeate ES6 () метод

Для этого решения вы будете использовать String.Prototype.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/Evel, как это:

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

Это можно прочитать как:

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

Затем вы можете вернуть тройной оператор в вашей функции:

Я надеюсь, что вы нашли это полезным. Это является частью моего «Как решить серию статей» в серии статей «Алгоритм FCC» о проблемах алгоритма FreeCodeCamp, где я предлагаю несколько решений и объяснить пошаговый шаг, что происходит под капотом.

Два способа подтвердить окончание строки в JavaScript В этой статье я объясню, как решить «подтвердить конец» FreeCodeCamm.

Три способа изменить строку в JavaScript Эта статья основана на бесплатном кодовом лагере основных алгоритма сценариев «обратная строка»

Три способа активизировать число в JavaScript Эта статья основана на Бесплатный код Camp Camp Basic Algorith Scripting “Factorialize ряд”

Два способа проверить палиндромы в JavaScript Эта статья основана на бесплатном кодовом лагере основных алгоритма сценариев «Проверить палиндромы».

Три способа найти самое длинное слово в строке в JavaScript Эта статья основана на бесплатном кодовом лагере основных сценариев алгоритма «Найти самое длинное слово в строке».

Три пути к названию Case Предложение в JavaScript Эта статья основана на бесплатном кодовом лагере основных алгоритма сценариев «Заглавное дело».

Если у вас есть собственное решение или какие-либо предложения, поделитесь их ниже в комментариях.

Или вы можете следовать за мной на Средний , Twitter , Github и LinkedIn , сразу после нажатия зеленого сердца ниже 😉

# StaySured, # KeepOnhacking & # Masteithappen!

Дополнительные ресурсы

Оригинал: “https://www.freecodecamp.org/news/three-ways-to-repeat-a-string-in-javascript-2a9053b93a2d/”