javascript - JavaScript 未定义的数组索引
问题描述
初学者在这里。我在 Coding Addict 做这个练习。
练习:
function longestWords(str){
let words = str.split(" ");
let size = 0;
let max = [''];
for(let i=0; i<words.length; i++){
if(words[i].length >= size){
size = words[i].length;
if(max[max.length-1].length <words[i].length){
max = [];
max.push(words[i]);
}
else{
max = [...max,words[i]];
}
}
}
return [...max];
}
console.log(longestWords("I woke up early today"));
console.log(longestWords("I went straight to the beach"));
现在,当我尝试将max[]
数组的索引更改为i
.
if(max[i].length <words[i].length){
我收到了这个错误:
未捕获的类型错误:无法读取最长单词处未定义的属性“长度”
有人可以告诉我为什么我不能更改索引而必须max.length-1
改用吗?
解决方案
当你使用 i 时,它代表 str 中的单个单词。例如,“我今天早起”有 5 个单词(或长度 = 5),但您的最大数组长度只有 1(即 '')。因此,如果您使用 i 访问最大数组,您将获得超出范围的索引。除非您使用 str 的长度与 max 相同。
推荐阅读
- python - 如何在 Python Pandas 中增加 countplot 的字体大小?
- sql - VBA代码中WHERE关键字的正确语法语法是什么
- python - MLflow:INVALID_PARAMETER_VALUE:模型注册表存储不支持 URI './mlruns'
- powershell - 为什么我的 foreach 列表中的第一项作为 $i 运行最终是空白或与列表中的下一项混合?
- amazon-web-services - Cloudformation - 在地图中定义默认值
- javascript - div没有将 html标签之间的文本转换为真正的粗体文本
- c# - 尝试从 NetCore50 exe WPF 项目引用 Netcore50 库 WPF 项目时无法加载文件或程序集
- excel - 在条件格式下引用论坛中的当前行
- javascript - Stripe 出错,在 localhost 上有效,但在服务器上无效
- c# - 如何正确处理玩家和两个重叠墙 XNA 之间的碰撞