我想通过使用for循环在数组中找到最长的单词。但是迭代会在第一次遍历时停止。我遗漏了什么?
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)
发布于 2019-04-16 03:28:09
在这个if语句中,您将一个单词的长度与一个单词本身进行比较:if (s[i].length > m)
。将其更改为比较两个单词的长度:if (s[i].length > m.length)
,并将m
的初始值设置为可能的最短“单词”,例如var m = ""
。
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)
发布于 2019-04-16 03:29:22
您正在将单词与数字进行比较:
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“的比较结果。
发布于 2019-04-16 03:29:25
因为第一次迭代if(si.length > m)有m= -infinity。然后在if块中重新分配m的值,以便在下一次迭代中检查si.length是否大于"hello“
https://stackoverflow.com/questions/55696010
复制相似问题