Natalla
@Natalla

Как посчитать количество гласных с помощью метода reduce?

Необходимо посчитать количество гласных в введенной строке с помощью reduce. Ответ получается только 0, независимо от количества введенных гласных.

var s=prompt("Введите строку");// переменная для ввода строки
function vowelsRed (s) {
var sa=s.split(''); // превращает строку в массив из символов
var vs="аеёиоуыэюя";// строка с гласными
var r=0;

sa.reduce( (r,c) => {
if (vs.indexOf (c) !==-1)
r++;
}
);
return r;
}
var rezault=vowelsRed(s) ;// присваивание переменной значения функции
alert ("Количество гласных: "+rezault);
  • Вопрос задан
  • 8114 просмотров
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Так вы неправильно используете функцию reduce. Она вот так работает
var result = arr.reduce(function(sum, val) { return sum + val; }, 0); // 0 - это стартовое значение для sum, если не указать, то возьмется значение из первого элемента массива, и он будет пропущен

Вот так должен работать ваш код
var s=prompt("Введите строку");// переменная для ввода строки
function vowelsRed (s) {
   var sa=s.toLowerCase().split(''); // превращает строку в массив из символов
   var vs="аеёиоуыэюя";// строка с гласными

   var r = sa.reduce( (sum, val) => {
      if (vs.indexOf (val) !==-1) { 
         sum++; // добавляем в кол-во найденных гласных +1
      }
      return sum; // Возвращаем новую сумму (или старую, если гласных нет).
   }, 0); // Запускаем reduce с нулевой суммой
   return r;
}
var rezault=vowelsRed(s) ;// присваивание переменной значения функции
alert ("Количество гласных: "+rezault);

Что не понятно, спрашивайте.
UPD: Только я бы еще добавил преобразование полученной строки в нижний реристр. вот так
var sa=s.toLowerCase().split('');
т.к. у вас большая А например, получается не гласная.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
potapchino
@potapchino
function getVowels(str, vowels = 'аеёиоуыэюя') {
  return str
    .toLowerCase()
    .split('')
    .reduce((acc, cur) => vowels.includes(cur) ? acc += cur : acc, '');
}


const vowels = getVowels('ехал грека через реку');
vowels // 'еаеаеееу'
vowels.length // 8
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы