由于某些原因,在有一对相邻的元音的情况下,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数组。在字符串上进行遍历可以达到相同的目的。

10-06 15:21