Если в строке больше 3 элементов тогда заменять на букву "К"

Всех приветствую, такая задачка

Написать программу запрашивающая строку. Удалить из строки последние 2 элемента. Заменить в строке буквы "р" на "к", если их больше 3, иначе заменить их на "в" Моя программа не реагирует на условие больше и выводит всегда переменную less, кто-нибудь может сказать почему? Заранее благодарю

let str = prompt("Введите строку");
let newStr = str.slice(0, -2);

if (newStr.indexOf("р") < 3) {
    let less = newStr.replaceAll('р', 'к');
    alert("Буквы 'р' в строке меньше трёх: " + less)
}else {
    let more = newStr.replaceAll('р', 'в');
    alert("Буквы 'р' в строке больше трёх: " + more)
    
}

Ответы (2 шт):

Автор решения: Citizen_39895

Для поиска вхождений буквы используйте match с флагом g, который будет искать все вхождения буквы в строке

let str = prompt("Введите строку");
let newStr = str.slice(0, -2);
let newStrMatches = newStr.match(/р/g);

if (newStrMatches === null || newStrMatches.length < 3) {
    let less = newStr.replaceAll('р', 'к');
    alert("Буквы 'р' в строке меньше трёх: " + less)
} else {
    let more = newStr.replaceAll('р', 'в');
    alert("Буквы 'р' в строке больше трёх: " + more)   
}
→ Ссылка
Автор решения: Евгений Колмак
const str = 'Друзья добро пожаловать в этот чудный мир'; 

const modificationString = str => {
let count = 0;
let result = '';
  for (const symbol of  str) {
if (symbol === "р"){
count ++;
}
}
for (let i = 0; i < str.length - 2; i++) {
 if(count > 3 && str[i] === "р") {
result += "в";
} else if (count <=3 && str[i] === "р") {
result += "к";
} else {
result += str[i];
}
}
  return result;
}

console.log(modificationString(str));
→ Ссылка