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, не мало слов обозвать счетчик?
Обсуждают сегодня