@Ignatiy2

Можно ли как-то упростить подсчет количества гласных в строке?

Имеется такая функция. Она подсчитывает количество гласных в строке
function vowelCount(stringing) {
	var string = stringing.toUpperCase();
	var sum = 0;
	for(var i = 0; i < string.length; i++) {
		if(string[i] === "A" || string[i] === "E" || string[i] === "I" || 
			string[i] === "O" || string[i] === "U" || string[i] === "Y") {
			sum++
		};
	};
	return sum;
};

Меня интересует момент с if. Можно ли такую проверку как-то упростить?
  • Вопрос задан
  • 157 просмотров
Решения вопроса 6
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
const countVowels = str => Array.from(str)
  .filter(letter => 'aeiou'.includes(letter)).length;

console.log(countVowels('abcdefghijklmnopqrstuvwxyz')); // 5
console.log(countVowels('test')); // 1
console.log(countVowels('ddd')); // 0


function countVowels(subject) {
    return subject.match(/[aeiou]/gi).length;
}


const count = str => (str.match(/[aeiou]/gi) || []).length;


https://stackoverflow.com/q/29450399/1603055
Ответ написан
BRAGA96
@BRAGA96
for (const symbol of ["A", "E", "I", "O", "U", "Y"]) {
	if (symbol === string[i]) {
		// ...
	}
}
Ответ написан
Комментировать
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
function vowelCount(stringing) {
  const string = stringing.toUpperCase();
  const letters = 'AEIOUY';
  let sum = 0;

  for(let i = 0, length = string.length; i < length; i++) {
    letters.includes(string[i]) && sum++;
  }

  return sum;
};
Ответ написан
Комментировать
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Ну, или регулярки
if(/[AEIOUY]/i.test(string[i])) {
   sum++;
}
Ответ написан
Комментировать
@senior65
Можно
function vowelCount(stringing) {
  var string = stringing.toUpperCase();
  var sum = 0;
  var vowel = 'aeiouAEIOU';
  for(var i = 0; i < string.length; i++) {
		if (vowel.indexOf(string[i]) !== -1) {sum += 1;}
  };
  return sum;
};
alert(vowelCount('Wolverine'))

Или вот так:
function vowelCount(stringing) {
   var string = stringing.toUpperCase();
		return string.match(/[aeiou]/gi).length;
};
alert(vowelCount('Wolverine'))
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const vowelCount = str => str.replace(/[^aeiouy]/gi, '').length;

или

const vowelCount = str => str.split(/[aeiouy]/i).length - 1;

или

const vowelCount = str => Array
  .from(str.toLowerCase())
  .reduce((acc, n) => acc + 'aeiouy'.includes(n), 0);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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