@ TJ Crowder указал мне правильное направление, но он не дал ответа, который следовал бы моей первоначальной логике (в данном случае я хотел использовать цикл for).
Вывод ключачто s = s.replace("!", "");
будет работать, когда i--
и s = s.replace(/!+$/g, '')
будет работать, когда i++
.Потому что, насколько я понимаю, метод replace () заменяет только первое вхождение строки, поэтому нам нужно i--
, чтобы заставить цикл повторяться в обратном направлении по строке, убедившись, чтокаждый случай "!"
заменяется.
Т.е. это будет работать:
function remove(s) {
for (i = 0; i < s.length; i--) {
let lastChar = s.slice(-1);
if (lastChar === "!") {
s = s.replace("!", '')
}
else {
return s;
}
}
return s;
}
И это также будет работать:
function remove(s) {
for (i = 0; i < s.length; i++) {
let lastChar = s.slice(-1);
if (lastChar === "!") {
s = s.replace(/!+$/g, '');
}
else {
return s;
}
}
return s;
}