我正在


  TypeError:无法读取未定义的属性“ length”


在下面的代码上。具体来说,该错误与newStr[i].length命令有关。如您所见(注释掉),我进行了测试,可以确认newStr[1]存在:

function findLongestWord(str) {
  var expression = /\w+/g;
  var newStr = str.match(expression);
  // return newStr[1].length;
  var longestWord = "";
  for (var i = 1; i < (newStr.length + 1); i++) {
    if (newStr[i].length > newStr[i - 1].length) {
      longestWord = newStr[i];
    } else {
      longestWord = longestWord;
    }
  }
  return longestWord;
}
console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));


有任何想法吗?

最佳答案

您的循环是一对一的。同样,输出还不正确(输出“惰性”)。您需要与longestWord而不是前一个单词进行比较。

function findLongestWord(str) {
  var expression = /\w+/g;
  var newStr = str.match(expression);
  // return newStr[1].length;
  var longestWord = "";
  for (var i = 1; i < newStr.length; i++) { // fixed off-by-one
    if (newStr[i].length > longestWord.length) { // compare to longestWord
      longestWord = newStr[i];
    } else {
      longestWord = longestWord;
    }
  }
  return longestWord;
}
console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));


给出"jumped"

10-07 17:52