我正在
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"
。