【发布时间】:2015-10-08 05:26:04
【问题描述】:
迭代一个数组以找到最长的字符串。每次我收到错误Cannot read property length of undefined。 Console.log 告诉我正在读取和理解数组的长度以及字符串的长度,所以我不明白哪里有未定义的属性。事实上,我刚刚将程序的原始长度增加了三倍,试图确保每个变量都已定义,但仍然没有好处。任何帮助将不胜感激。
function findLongestWord(str) {
var longest = 0;
var array = str.split(" ");
var arrayL = array.length;
for (i=0; i<=arrayL; i++) {
var currentWord = array[i];
var currentL = currentWord.length;
if (currentL > longest) {
currentL = longest;
};
};
return longest;
};
findLongestWord("The quick brown fox jumped over the lazy dog");
编辑:虽然下面的答案确实解决了这个问题,但我也只是想提醒那些以后可能会在谷歌上搜索这个帖子的人,我还必须将我的最终 if statement 从 currentL = longest; 交换为 longest = currentL,因为 @987654327 @ 是我最终返回的内容。
【问题讨论】:
-
你读错了 :-) 不是
length是 _undefined,而是你尝试获取此属性的对象 - 未定义 -
数组是零索引的,但长度不是。换句话说,
i<arrayL -
另外,您是要返回最长的单词,还是要返回您创建的数组中最长单词的索引?哦,您不需要在
for、if和function末尾添加分号。 -
@j08691 我试图返回最长单词的长度。感谢您的分号帮助,我还是个初学者。
标签: javascript