由于某些原因,在有一对相邻的元音的情况下,VowelCount()仅计算一个元音。例如,将“ goes”中的“ oe”计为一个元音。我不明白为什么会这样。不管我使用的是forEach函数还是for循环,它都会这样做。谁能消除我的误会?
这是我的代码:
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"));
最佳答案
我不确定为什么,但是全局搜索/g
导致它在e
上失败。无论如何,您都不需要针对单个字符进行全局搜索。
这是一个工作版本:
function VowelCount(str) {
var pattern = /[aeiou]/i;
var vowelCount = 0;
for (var i = 0; i < str.length; i++) {
if (pattern.test(str[i])){
vowelCount++;
}
}
return vowelCount;
}
console.log(VowelCount("goes")); //2
我还对其进行了更改,因此您无需将其转换为char数组。在字符串上进行遍历可以达到相同的目的。