JavaScript 未定义数组索引
2020-12-16
89
我是初学者。我正在做 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){
我收到此错误:
Uncaught TypeError: Cannot read property 'length' of undefined at longestWords
有人能告诉我为什么我不能更改索引而必须使用
max.length-1
吗?
2个回答
当您使用 i 时,它代表 str 中的单个单词。例如,“我今天早起”有 5 个单词(或长度 = 5),但您的 max 数组的长度只有 1(即 '')。因此,如果您使用 i 访问 max 数组,您将获得超出范围的索引。除非您使用的长度与 max 相同的 str。
HW Siew
2020-12-16
因为您的最大数组始终只有一个元素,所以索引 1 中没有条目,即 max[max.length],所以您最好将其写为
max[0]
。
assellalou
2020-12-16