首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么for循环在第一次迭代时停止?

为什么for循环在第一次迭代时停止?
EN

Stack Overflow用户
提问于 2019-04-16 03:24:46
回答 5查看 552关注 0票数 0

我想通过使用for循环在数组中找到最长的单词。但是迭代会在第一次遍历时停止。我遗漏了什么?

代码语言:javascript
复制
var a = "hello asdf asdf sdfgfghkkjb";
var s = a.split(" ");
var m = -Infinity;
for (var i = 0; i < s.length; i++) {
  if (s[i].length > m) {
    m = s[i];
  }
}
console.log(m)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-04-16 03:28:09

在这个if语句中,您将一个单词的长度与一个单词本身进行比较:if (s[i].length > m)。将其更改为比较两个单词的长度:if (s[i].length > m.length),并将m的初始值设置为可能的最短“单词”,例如var m = ""

代码语言:javascript
复制
var a = "hello asdf asdf sdfgfghkkjb";
var s = a.split(" ");
var m = "";
for (var i = 0; i < s.length; i++) {
  if (s[i].length > m.length) {
    m = s[i];
  }
}
console.log(m)

票数 4
EN

Stack Overflow用户

发布于 2019-04-16 03:29:22

您正在将单词与数字进行比较:

代码语言:javascript
复制
var s = a.split(" ");
var m = -Infinity; // m is a number
for (var i = 0; i < s.length; i++) {
   if (s[i].length > m) { // in first iteration, true, 5 > -Infinity
      m = s[i]; // in first iteration, m becomes a word
   }
}

在随后的迭代中,你会得到类似于"4 > ...in“的比较结果。

票数 0
EN

Stack Overflow用户

发布于 2019-04-16 03:29:25

因为第一次迭代if(si.length > m)有m= -infinity。然后在if块中重新分配m的值,以便在下一次迭代中检查si.length是否大于"hello“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55696010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档