2016-10-28 14 views
0

申し訳ありませんが、私はこれが動作するように感じることはできません。私はこれまでに書いた1つの関数を持っています。それは素晴らしい作品です。今私は新しい関数を2番目の関数を呼び出す必要があります。Javascript For Loop ...別の機能で1つの機能?

function isVowelR(str) { 

if(str = str.match(/[aeiou]/gi)) 
    return true 
else 
    return false 
} 

この1つが正常に動作します:

は、ここで最初の関数です。 strが母音の場合はtrueを返します。ここに1つのImがついています。これは

function countVowels(str) { 
    var count = 0 
    for (var i = 0; i == str.length; i++) 
    { 
     if (i == isVowelR(i)) 
     { 
      ++count 
     } 
    } 

    return count 

} 

この第二の機能のニーズが、私は別の関数で考え出し入力された文字列()内にあるどのように多くの母音数える。アイブ氏はいくつかの他のものと同様(しようとしたものです。しかし、私をどのように行います私は最初の関数を呼び出すために必要なのです場合、それは仕事を得る?

+0

あなたがチェックする必要があります母音ではなくインデックスであるので、 'i 'だけではなく、' str [i] 'と比較します。 – Lucero

+1

http://stackoverflow.com/q/40313624/1427878 - 素晴らしい偶然、ジョンアリア... – CBroe

+0

@CBroe、私は同意する、しかし、私は質問が "それを行う方法でしたか?しかし、なぜ「私のコードがうまくいかないの? :) – Dekel

答えて

5

問題はi変数が数値であるということですので、あなたが実際に行うことは、変更することができisVowelR(0)isVowelR(1)isVowelR(2) ...

ですこれは:

isVowelR(str[i]) 

別のオプションは、ちょうどmatchの長さをチェックすることです:

str.match(/[aeiou]/gi).length 

あなたは、文字列の各文字の上にループする必要はありません。この方法:

function countVowels(str) { 
    return str.match(/[aeiou]/gi).length 
} 
+0

くそー、すみません。 1時間前に開かれた他の質問は表示されませんでした:\ – Dekel

+0

ええ、私はあなたがコメントした最後のものを持っています。str.matchは別の機能です。 isVowelR関数を呼び出す必要はありません。しかし、countVowelsの中にstr.match部分を含むisVowelR関数を含める方法がありますか? – johntc121