迭代数组以找到最长的字符串。每次我收到错误 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 语句
与 currentL 交换= longest;
到 longest = currentL
因为 longest
是我最终要返回的。
最佳答案
问题是你的迭代边界
for (i=0; i<=arrayL; i++) {
请注意,您将要查找 array[array.length] 执行此操作,而那将始终未定义,因为 10 项数组中的第 10 项是 [9],[10] 未定义。
另外,请在这里使用var
for (var i=0; i < arrayL; i++) {
关于javascript - 迭代数组时未定义“长度”属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000951/