Как мне повторить строку заданное количество раз без использования встроенного .repeat ()? - PullRequest
0 голосов
/ 14 июля 2020

Повторить заданную строку str (первый аргумент) num раз (второй аргумент). Верните пустую строку, если num не является положительным числом.

Это то, что я пробовал. Почему не работает?

function repeatStringNumTimes(str, num) {
var result = "";
var i;
for (i = 0; i < num.length; i++) {
  result += str[i];
}
  if (num>0){
    return result;
  }
  else{
    return str = "";
  }
}

repeatStringNumTimes("abc", 3);

Ответы [ 3 ]

2 голосов
/ 14 июля 2020

Просто объединяйте str на каждой итерации; в настоящее время вы объединяете каждый символ результирующей строки. Кроме того, числа не имеют свойства длины, и вам нужно просто сравнить индекс с самим num.

function repeatStringNumTimes(str, num) {
    var result = "";
    var i;
    for (i = 0; i < num; i++) {
        result += str;
    }
    return result;
}

function repeatStringNumTimes(str, num) {
    var result = "";
    var i;
    for (i = 0; i < num; i++) {
        result += str;
    }
    return result;
}
console.log(repeatStringNumTimes("abc", 3));

Вы можете реализовать это проще, создав массив из num элементов, заполнив его str, а затем объединив его в одну строку.

function repeatStringNumTimes(str, num) {
    return Array(num).fill(str).join('');
}
1 голос
/ 14 июля 2020

Как говорили другие, num не имеет свойства length. Вам просто нужно num.

Чтобы немного увеличить скорость для создания действительно длинных повторов, вы можете удвоить частичный результат по длине:

function repeatStringNumTimes(str, num) {
    if (num <= 0) return "";
    let result = str;
    for (let i = 2; i < num; i *= 2) result += result;
    return result + result.slice(0, num - result.length);
}
console.log(repeatStringNumTimes("a", 34));
0 голосов
/ 14 июля 2020

Из этого упражнения я узнал, что num не имеет свойства .length, так как это не набор строк. Кроме того, я узнал, что мне не нужен доступ к отдельным символам строки (str [i]). Вот модифицированный ответ на этот вопрос с использованием моего подхода. Спасибо, что помогли мне с этим вопросом. Если бы вы могли проголосовать за это, это было бы признательно, так как это было очень полезно для меня, а может быть и для других.

function repeatStringNumTimes(str, num) {
var result = "";
var i;
for (i = 0; i < num; i++) {
  result += str;
}
  if (num>0){
    return result;
  }
  else{
    return str = "";
  }
}

repeatStringNumTimes("abc", 3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...