forEach, reduce и filter. 
                  
                  
                  Не понимаю, почему когда я выношу переменную input в глоюальную область видимости, ни один метод из выше перечисленных не работают (всегда показывает 0 классных). Работает все только если я положу input в clickFunction. А в случае с forEach чтобы все заработало, нужно завернуть его в if(playing), и приходится всегда перегружать страницу, чтобы посчитать гласные в очередной раз. 
                  
                  
                  Может может кто объяснить? надеюсь там понятно что к чему
                  
                  
                  "use strict";
                  
                  
                  
                  
                  
                  const btn = document.getElementById("btn");
                  
                  
                  const vowels = "аеёиоуэюяы";  
                  
                  
                  let count = 0;  
                  
                  
                  
                  
                  
                  let playing = true; 
                  
                  
                  
                  
                  
                  function vowelsCountViaForEach(el){
                  
                  
                    if(vowels.indexOf(el.toLowerCase()) > -1) {
                  
                  
                      count++
                  
                  
                    }
                  
                  
                  }
                  
                  
                  
                  
                  
                  function clickFunction() { 
                  
                  
                     let input = [...document.getElementById("input").value];
                  
                  
                   
                  
                  
                    if(playing) {
                  
                  
                      input.forEach(vowelsCountViaForEach);
                  
                  
                    };
                  
                  
                    playing = false; 
                  
                  
                  
                  
                  
                    return (document.getElementById(
                  
                  
                      "result"
                  
                  
                    ).textContent = `в вашей цитате ${count} ${getNumWord(
                  
                  
                      count,
                  
                  
                      "гласная",
                  
                  
                      "гласные",
                  
                  
                      "гласных"
                  
                  
                    )}!`); 
                  
                  
                  }
                  
                  
                  
                  
                  
                  btn.addEventListener("click", clickFunction);
                  
                  
                  
                  
                  
                  function getNumWord(num, word1, word2, word5) {
                  
                  
                    var dd = num % 100;
                  
                  
                    if (dd >= 11 && dd <= 19) return word5;
                  
                  
                    var d = num % 10;
                  
                  
                    if (d == 1) return word1;
                  
                  
                    if (d >= 2 && d <= 4) return word2;
                  
                  
                    return word5;
                  
                  
                  };
                  
                  
                
сделайте, чтоб функция принимала строку, а возвращала число, она у вас всё сразу делает
Плес codepen git gist pastebin что-то из этого, не надо кидать полотна кода в чат
я так охренел, что забыл сказать даже :D
vowelsCountViaForEach, не мало слов обозвать счетчик?
Обсуждают сегодня