"string.match()"不是函数?

Cha*_*son 1 javascript regex for-loop function object

我写了一个函数来计算单词中的长度和元音,并将它们输出到数组中的对象中.然而我得到错误"word.match()不是一个函数",其中word是一个字符串.

function wordData(string){
  var stringSplit = string.split(' ');
  var output = [];
  for(var i = 0; i <= stringSplit.length; i++){
    var eachWord = stringSplit[i];
    var vowel = eachWord.match(/[aeiou]/gi);
    var vowelCount = vowel ? vowel.length : 0;
    var objectData = {};
    objectData.word = eachWord;
    objectData.length = eachWord.length;
    objectData.vowels = vowelCount;
    output.push(objectData);
  }
  return output;
}

console.log(wordData('some really awesome string'));
Run Code Online (Sandbox Code Playgroud)

知道什么是错的吗?

Jos*_*eam 6

for(var i = 0; i <= stringSplit.length; i++)

那将超过你的字符串数组的最后一个索引.因此,这将是undefined,你不能打电话matchundefined.

改为:

for(var i = 0; i < stringSplit.length; i++)

  • 或者当然,`stringSplit.forEach(function(eachWord){/*...*/})` (3认同)