何らかの理由で、VowelCount()は、隣接する母音のペアがある場合に1つの母音のみを数えます。たとえば、 "go"の "oe"を1つの母音として数えます。なぜこれが起こっているのか分かりません。 forEach関数を使用するか、forループを使用するかにかかわらず、これを行います。誰かが私の誤解を解決することができますか?しかし、グローバル検索/g
はそれがe
に失敗の原因となっている理由は、私はよく分からない私のVowelCount関数が適切な解決策を返さないのはなぜですか?
function VowelCount(str) {
var charArr = str.split('');
var pattern = /[aeiou]/gi;
var vowelCount = 0;
/*
charArr.forEach(function(char) {
if (pattern.test(char)) {
//console.log(char);
vowelCount++;
}
});
*/
for (var i = 0; i < charArr.length; i++) {
//console.log(charArr[i]);
if (pattern.test(charArr[i])) vowelCount++;
}
return vowelCount;
}
console.log(VowelCount("goes"));
を:あなたは、配列をループする必要はありませんし、それが一致した場合、あなたのカウントを取得この方法で(または)と組み合わせて複数回呼び出された 'test()')と同じように、 '' exec()グローバル正規表現インスタンスは前回のマッチより進んでいきます "* gを削除すると、if(/ [aeiou] /gi.test()を実行してループの各繰り返しで新しい正規表現オブジェクトを作成するように、 charArr [i]))... ' – nnnnnn
PS 'return(str.match(/ [aeiou]/gi)|| [])。length'はループを必要とせずに母音の数を返します。 – nnnnnn