Почему-то не срабатывает метод concat()
Надо чтобы строка повторилась слитно 3 раза. При этом repeat не пользоваться. Решил через добавление в массив циклом for и потом в строку join('').
Обнаружил, что ошибка в concat. А отчего он не хочет здесь работать?
function repeatStringNumTimes(str, num) {
let me = ''
let i = 0
while (i < num) {
me.concat(str)
//me += str //если вставить эту строку вместо concat, let me изменится
i++
}
return me;
}
let a = repeatStringNumTimes("abc", 3);
console.log(a);
Ответы (2 шт):
Что касается ошибки в коде,то в документации говориться:
Метод concat() объединяет текст из двух или более строк и возвращает новую строку.
Это значит что строка не мутирует (не изменяется). Вообще, в JS строки никогда не мутируют, только массивы и то не всегда например в методе splice происходит мутация.
В любом учебном задании преследуется цель чтобы учащийся усвоил какую-то тему, поэтому очень важно в вопросе цитировать дословно все условия задачи, это поможет дать наиболее подходящий ответ. Т.е. нужно понимать какая тема в данном случае изучается Методы массивов или Методы строк, а может вообще Циклы и условные конструкции - во всех этих случаях ответы будут разными.
Если нужна реализация без repeat то вот она, тут используются методы массивов (но можно было бы обойтись циклом):
function repeatStringNumTimes(str, num) {
return Array(num).fill(str).join('');
}
let a = repeatStringNumTimes("abc", 3);
console.log(a);
Что касается варианта с concat (методов строк) я бы использовал его так, хотя тут можно было обойтись простым join:
function repeatStringNumTimes(str, num) {
return str.concat(...Array(num -1).fill(str))
}
console.log(repeatStringNumTimes("abc", 3))
concat() не изменяет строку, а создает новую с измененным текстом.
Правильный код:
function repeatStringNumTimes(str, num) {
let me = ''
let i = 0
while (i < num) {
me = me.concat(str)
i++
}
return me;
}
let a = repeatStringNumTimes("abc", 3);
console.log(a);