JS Как посчитать количество повторяющихся слов в строке?
столкнулся с проблемой и не могу ее решить. Необходимо ввести в текстовом редакторе строку и по нажатию на кнопку определить и вывести в alert() количество слов повторяющихся 2 раза.

Скажем в input будет введено да да нет ага угу ага - результат должен быть 2. Не подскажите как решить это дело? А то руки уже опускаются
<body>
<div style="text-align: center; align-items: center;">Задание 7</div>
<!-- <div id="res" style="text-align: center; align-items: center;"></div> -->
<input id="string" type="edit" style="margin: auto; display: block; margin-top: 10px;">
<button style="margin: auto; display: block; margin-top: 10px;" onclick="TwoString(document.getElementById(string).value)">Проверка</button>
<script>
function TwoString() {
// Не знаю как это решить
let result = {};
for (let i = 0; i < str.length; i++) {
if (result[str[i]]) {
return false;
};
result[str[i]] = true;
}
return true;
}
</script>
Я нашел в инете и попробовал посчитать хотя-бы есть ли количество повторяющихся символов, а после сделать счетчик. После думал по этой аналогии сделать счетчик повторяющихся слов. Но ничего не работает( Подскажите пожалуйста, в чем проблема.
Ответы (2 шт):
Автор решения: Юрий Копоть
→ Ссылка
function TwoString(initStr) {
// разбиваем строку на массив, по пробелу
const strItems = initStr.split(' ');
const result = {};
strItems.forEach( item => {
// приводим в один регистр, для правильной проверки
const normalItem = item.toLowerCase();
// Если уже есть, просто увеличиваем. Если нет, устанавливает счетчик в 1
if(normalItem in result) {
result[normalItem] = result[normalItem] + 1;
} else {
result[normalItem] = 1;
}
});
return Object.keys(result).map(k => {
return `Слово: ${k}: ${result[k]};`
}).join(' ')
}
alert(TwoString('да да нет ага угу ага'))
Автор решения: Laukhin Andrey
→ Ссылка
Вариант 1. Через вспомогательный объект.
let text = "да да да нет нет угу угу ыы ага ага";
let words = text.split(/\s+/);
let qty = 0;
let hashes = {};
words.forEach(v => {
hashes[v] = hashes.hasOwnProperty(v) ? 1 : 0;
});
for (let key in hashes) qty += hashes[key];
console.log(qty);
Вариант 2. Сортировка и попарное сравнение.
let text = "да да да нет нет угу угу ыы ага ага";
let words = text.split(/\s+/);
words.sort();
let first = true;
let qty = 0;
words.reduce((a, v) => {
if (a === v) {
if (first) qty++;
first = false;
} else
first = true;
return v;
});
console.log(qty);