JavaScript

В чем ошибка???

Написать функцию, входными параметрами которой являются строка, символ, номер символа в строке. Функция должна заполнять строку, начиная с указанного номера, заданными символами, до конца строки.
let str = prompt('Введите строку:');
let s = prompt('Введите символ:');
let n = parseInt(prompt('Введите число:'));
function abc(str, s, n){
for(let i = n; i <= str.length - 1; i++){
str.replace('str[i]', 's')
}
}
alert(abc(str, s, n));
В дважды неправильном использовании функции Replace.
1. Ты передаешь в неё текст 'str[i]', а не str[i].
2. Replace заменяет первый найденный символ.
3. Текстовые значения immutable (неизменяемые). Им нельзя просто взять и поменять какой-то символ по индексу. При этом всегда будет создаваться новая строка. Поэтому вызывать Replace в цикле очень затратно.
4. Тебе может помочь, например, substring и repeat.
Дмитрий Морозов
Дмитрий Морозов
83 840
Лучший ответ
как сказано выше replace неуместен т. к. это цикл в цикле + не умеет по индексу работать а доступ к чару по индексу не дает изменить его
+ зачем лишняя мат операция в условии for? ведь можно i < str.length
вы можете полностью обойтись без substr и repeat все тем же одним (но можно и двумя циклами)

аля
let i, new_str = "";
for (i = 0; i < n; i++) new_str = new_str + str[i]; //копипастим в новую строку до символа с которого начинается замена
for(; i < str.length; i++) new_str = new_str + s; //продолжаем с символа где начинается замена, т. к. мы не задали значение i в первом блоке for, именно затем я объявил его вне цикла
return new_str;

в один аля
for(let i = 0; i < str.length; i++) new_str = new_str + (i < n? str[i] : s);

в один мы делаем лишнюю проверку на каждой итерации, a? b : c - тернарные условия или сокращенный if где a - условие, b - что сделать если оно истино, c - что делать когда ложно, учтите - не задать ветку else невозможно