javascript - 迭代数组时未定义“长度”属性

标签 javascript

迭代数组以找到最长的字符串。每次我收到错误 Cannot read property length of undefinedConsole.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/

相关文章:

javascript - 无法通过 jquery 附加 HTML 文件

javascript - AngularJS 内部调用函数陷入无限循环

javascript - jQuery offset().top 返回错误值 - 边距错误

javascript - 什么是窗口重绘的 jQuery 事件?

javascript - 有人可以帮我理解为什么会这样吗?

javascript - 隐藏滚动条,但仍然可以在 Firefox 上滚动

javascript - 在鼠标悬停在另一个元素上时更改 span 元素的 CSS 类

php - JS变量的下拉值

javascript - 如何在aws lambda函数中使用setInterval

javascript - 尝试使用 vue 和 webpack : __WEBPACK_IMPORTED_MODULE_3_keycloak_js__ is not a function 安装 keycloak-js 时出现未捕获的类型错误