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

我正在寫一個函數,它接受一個字符串並返回該字符串中元音的數量。返回字符串中元音數量的函數

上面的代碼是我用來比較每個字母,看它是否是元音。有效。

但是,代碼似乎對我來說非常混亂。但我不知道如何寫得更好。有沒有更簡潔的方式來編寫這段代碼?

+0

放元音將陣列使用object找到 – Mahi

+0

什麼是錯的方式的問題。真的不明白我在這裏做錯了 –

+0

你的意思是downvotes? – Mahi

回答

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

OR

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

你可以用一個簡單的正則表達式做到這一點,並用字符串原型結合起來:

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

爲什麼不檢查和計數

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