" string.match()"不是功能?

时间:2015-09-08 17:56:19

标签: javascript regex function object for-loop

我编写了一个函数来计算单词中的长度和元音,并将它们输出到数组中的对象中。然而我得到错误" 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'));

任何想法有什么问题?

2 个答案:

答案 0 :(得分:6)

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

这会超过你的字符串数组的最后一个索引。因此,它将为undefined,您无法在match上致电undefined

请改为:

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

答案 1 :(得分:4)

索引越界

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

应该是

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