【问题标题】:"string.match()" is not a function?“string.match()”不是函数吗?
【发布时间】:2015-12-04 12:30:10
【问题描述】:

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

知道有什么问题吗?

【问题讨论】:

    标签: javascript regex function object for-loop


    【解决方案1】:

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

    这将超过字符串数组的最后一个索引。因此,它将是undefined,您不能在undefined 上调用match

    改为这样做:

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

    【讨论】:

    • 当然,stringSplit.forEach(function(eachWord) { /*...*/ })
    【解决方案2】:

    索引超出范围

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

    应该是

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

    【讨论】:

      猜你喜欢
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2017-11-11
      • 1970-01-01
      相关资源
      最近更新 更多