javascript - 为什么这个 JavaScript 实现查找最大单词返回 TypeError: Cannot read properties of undefined (reading 'length')
问题描述
为什么下面的代码会返回错误?str 绝对是一个字符串,所以它不是未定义的。words 是一个数组,因此在其上调用 .length 也应该是有效的。这个实现有什么问题?
TypeError:无法读取未定义的属性(读取“长度”)
function findLongestWordLength(str) {
let words = str.split(" ");
let longword = words[0];
for(let i = 0; words.length <= terminal; i++){
if(words[i].length >= longword.length){
longword = words[i]
}
}
let longwordlength = longword.length;
return longwordlength;
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");
// why is this giving the error: TypeError: Cannot read properties of undefined (reading 'length')
解决方案
您的for
循环条件不正确。它应该是是否i
小于单词数,因为您正在遍历每个单词:
function findLongestWordLength(str) {
let words = str.split(" ");
let longword = words[0];
for(let i = 0; i < words.length; i++){
if(words[i].length >= longword.length){
longword = words[i]
}
}
let longwordlength = longword.length;
return longwordlength;
}
console.log(findLongestWordLength("The quick brown fox jumped over the lazy dog"))
然而,完成这个任务的更简单的方法是用空格分割字符串,映射单词并获取每个单词的长度,然后使用Math.max
和扩展语法得到最大的项目:
function findLongestWordLength(str) {
return Math.max(...str.split(" ").map(e => e.length))
}
console.log(findLongestWordLength("The quick brown fox jumped over the lazy dog"));
推荐阅读
- icons - Vuetify 使用 2 个 IconFonts
- python - ModuleNotFoundError:尽管已经安装了 passlib,但没有名为“passlib”的模块
- mysql - 忘记使用 PHP 和 ORACLE DB 设置密码
- python - 使用 Python 读取包含空单元格的 Excel 电子表格的内容。我需要以编程方式忽略空单元格
- python - 如何在导入的方法(python)中使用 exec() 创建新变量
- python - python打印格式,从变量中读取缩进值
- amazon-web-services - 使用 accumulo 进行大规模摄取
- intellij-idea - 有没有办法将 1 添加到包含 intellij 中查找和替换数字的字符串中?
- java - Kotlin 到 Java 的迁移
- unity3d - 如何更快地更新精灵位置?