Написать функцию, входными параметрами которой являются строка, символ, номер символа в строке. Функция должна заполнять строку, начиная с указанного номера, заданными символами, до конца строки.
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));
JavaScript
В чем ошибка???
В дважды неправильном использовании функции Replace.
1. Ты передаешь в неё текст 'str[i]', а не str[i].
2. Replace заменяет первый найденный символ.
3. Текстовые значения immutable (неизменяемые). Им нельзя просто взять и поменять какой-то символ по индексу. При этом всегда будет создаваться новая строка. Поэтому вызывать Replace в цикле очень затратно.
4. Тебе может помочь, например, substring и repeat.
1. Ты передаешь в неё текст 'str[i]', а не str[i].
2. Replace заменяет первый найденный символ.
3. Текстовые значения immutable (неизменяемые). Им нельзя просто взять и поменять какой-то символ по индексу. При этом всегда будет создаваться новая строка. Поэтому вызывать Replace в цикле очень затратно.
4. Тебе может помочь, например, substring и repeat.
как сказано выше 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 невозможно
+ зачем лишняя мат операция в условии 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 невозможно
Похожие вопросы
- Почему консоль выдает ошибку в callback ф-ии?
- Проверьте 2 кода ((( пожалуйста и ткните носом на ошибку. В общем 1 код работает частично, а второй вообще не работает. JS
- Почему в JS нет низкоуровневых ошибок (предупреждений)?
- Где я сделал ошибку в коде
- Ошибка при выполнении JS команды Notification
- В чем ошибка?
- В чем ошибка кода?
- Не могу найти ошибку в коде.
- Помогите найти ошибку?
- Найдите ошибку, пожалуйста. Редактор ругается на все строки, ничего не выдаёт.