我正在尝试解决有关查找字符串中最长单词的一个非常简单的挑战。 这是代码:
function find(par) {
let arrayWord = par.split(" ");
let longestWord = "";
for (let i = 0; i <= arrayWord.length; i++) {
if (longestWord.length < arrayWord[i].length) {
longestWord = arrayWord[i]
}
}
return longestWord;
}
find("Find the longest word");
我需要帮助来了解为什么会出现此错误:
未捕获的TypeError:无法读取未定义的属性'length' 找到时(:5:47) 在:11:1处找到@ VM959:5(匿名)@ VM959:11
谢谢。
答案 0 :(得分:3)
function find(par) {
let arrayWord = par.split(" ");
let longestWord = "";
for (let i = 0; i < arrayWord.length; i++) {
if (longestWord.length < arrayWord[i].length) {
longestWord = arrayWord[i]
}
}
return longestWord;
}
console.log(find("Find the longest word"));
答案 1 :(得分:1)
无法读取未定义的属性“ length”,是因为它无法找到某种类型的变量(在您的情况下为字符串)来调用函数的长度。在您的情况下,因为检查中没有元素arrayWord [arrayWord.length],所以arrayWord [i] .length不适用于最后检查条件的字符串。这就是为什么arrayWord [i] .length在最后一次迭代中给您一个错误的原因。只需将i <= arrayWord.length更改为i 编辑:根据RobG的建议进行更改function find(par) {
let arrayWord = par.split(" ");
let longestWord = "";
for (let i = 0; i <arrayWord.length; i++) {
if (longestWord.length < arrayWord[i].length) {
longestWord = arrayWord[i]
}
}
return longestWord;
}