2016-11-22 5 views
-4
if(string[i] === "a" || string[i] === "e" || string[i] === "i" || string[i] === "o" || string[i] ==="u"){} 

Я пишу функцию, которая берет строку и возвращает количество гласных в этой строке.функция, которая возвращает количество гласных в строке

Код, приведенный выше, является тем, что я использовал, чтобы сравнить каждое письмо, чтобы увидеть, был ли он гласным. Это сработало.

Однако код кажется невероятно грязным для меня. Но я понятия не имею, как лучше писать. Есть ли более сжатый способ написать этот код?

+0

нанесенными гласные в массив и найти – Mahi

+0

Что не так с вопросом, кстати. На самом деле не понимаю, что я сделал неправильно здесь –

+0

вы имеете в виду, что downvotes? – Mahi

ответ

1
function getAllVowels(string) { 
    var m = string.match(/[aeiou]/gi); 
    return m === null ? 0 : m.length; 
} 

ИЛИ

var syl = ("|"+a+"|").split(/[aeiou]/i).length-1; 

Refer

+1

Укажите ваш источник, пожалуйста. – BenM

+1

http://stackoverflow.com/questions/29450399/counting-number-of-vowels-in-a-string-with-javascript – BenM

2

Вы можете сделать это с помощью простого RegEx, и объединить его с струнного прототипа:

String.prototype.countVowels = function() 
{ 
    var vowels = this.match(/[aeiou]/gi); 
    return (vowels === null) ? 0 : vowels.length; 
} 

, а затем вызвать его с помощью:

var vowels = 'abcdefghijklmnopqrstu'.countVowels(); // Returns 5. 

RegEx любезно предоставлен @JamesThrope.

0

Почему бы не использовать object для проверки и подсчета

var count = { 
    a: 0, 
    e: 0, 
    i: 0, 
    o: 0, 
    u: 0 
} 

использования с in operator

if (string[i].toLowerCase() in count) { 
    count[string[i].toLowerCase()]++; 
} 
+1

Как насчет 'A',' E', 'I' и т. Д.? – BenM

+0

использовать 'toLowerCase()'. –

+0

FWIW, я думаю, что OP нужно только общее число, а не разбивка каждого счета. Возможно, стоит добавить, как получить общее количество. – BenM

Смежные вопросы