それらの文字の1つであるかどうかをチェックする必要があるいくつかのjavascriptコードの下。ただし、たとえば「Hallo」と入力すると、「H」、「L」、「L」もカウントされます。
woord.charAt(i) == 'a' || 'e' || 'i' || 'o' || 'u'
私は何を間違えましたか?
それらの文字の1つであるかどうかをチェックする必要があるいくつかのjavascriptコードの下。ただし、たとえば「Hallo」と入力すると、「H」、「L」、「L」もカウントされます。
woord.charAt(i) == 'a' || 'e' || 'i' || 'o' || 'u'
私は何を間違えましたか?
(woord.charAt(i) == 'a') || 'e' || 'i' || 'o' || 'u'
// evaluates to true or 'e'
文を書くようにコードを書こうとしているように見えますが、この場合はうまく翻訳できません。上記のコードは、その式で実際に何が起こるかを示しています。
文字を各文字列と個別に比較するか、正規表現を記述する必要があります。正規表現はよりコンパクトで、次のようになります。
/[aeiou]/.test(word.charAt(i))
問題に対して別のアプローチを使用してみてください
var c = woord.charAt(i);
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){
vowels++;
}
代わりにこれを使用してください
var str = "My string";
var chr = "";
var nVowels = 0;
for (pos = 0; pos < str.length; pos++){
chr = str.charAt(pos).toLowerCase();
if (chr == "a" || chr == "e" || chr == "i" || chr == "o" || chr == "u")
nVowels++;
}
基本的に、各オプションを個別にチェックする必要がありますが、これは見苦しく、あまりうまく機能しません。受け入れられた文字の配列を作成し、その配列内の現在の文字のインデックスを確認したいと思います。
var vowels = new Array('a', 'e', 'i', 'o');
var word = 'hello';
var vowelCount = 0;
for(var x=0; x < word.length; x++){
var ch = word.charAt(x).toLowerCase();
if (vowels.indexOf(ch) > -1)
vowelCount++;
}