如何修复TypeError:无法读取JavaScript中未定义的属性'length'?

pinkon5k  于 2022-12-28  发布在  Java
关注(0)|答案(2)|浏览(175)

我正在尝试解决一个非常简单的难题,即在字符串中找到最长的单词。代码如下:

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");

我需要帮助来理解为什么会出现此错误:
未捕获的类型错误:无法读取未定义的属性"长度",查找(:5:47),查找:11:1,查找@VM959:5(匿名)@VM959:11
谢谢您。

egdjgwm8

egdjgwm81#

无法读取属性'length',当它无法找到某个类型的变量时,未定义(在你的例子中是一个字符串)来调用函数length。在你的例子中,arrayWord[i].length对于你检查的最后一个条件不是一个合适的字符串,因为在数组中没有元素arrayWord[arrayWord.length]。这就是为什么arrayWord[i].length在你的最后一次迭代中给你一个错误。只要改变i〈=数组字长到i〈数组字长

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;
}

编辑:根据RobG的建议进行更改

cwdobuhd

cwdobuhd2#

只需将条件〈=更改为〈并尝试

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"));

相关问题