为什么要打印else和if语句?检查数组是否匹配 他们所做的第5行的元素......所以我的if语句应该打印出来。 然而,我的警报条件打印出if条件。我已经尝试重新排列代码,但仍然没有运气。
var array1 = [1, 89, 3, 4, 5];
var array2 = [1, 2, 7, 10, 89];
for (var i = 0; i < 6; i++) {
for (var j = 0; j < 6; j++) {
if (array1[i] == array2[j]) {
document.getElementById("demo").innerHTML =
"Hello World" //Should just print this since elements match
break;
} else {
alert("Error");
break;
}
}
}
答案 0 :(得分:1)
如果要在内循环中找到匹配项时停止外循环,则需要为break
添加标签参数。
outer:
for (var i = 0; i < 6; i++) {
for (var j = 0; j < 6; j++) {
if (array1[i] == array2[j]) {
document.getElementById("demo").innerHTML =
"Hello World" //Should just print this since elements match
break outer;
} else {
alert("Error");
break;
}
}
}
在Hello World
显示之前,您仍可能收到一些提醒。您的代码会警告每个不匹配的元素对,直到找到匹配项。因此,除非匹配元素在两个数组中都是第一个,否则在显示Hello world
之前,您将收到一堆警报。
此外,由于break
和if
块中都有else
,因此您永远不会超过j
循环的第一次迭代。
如果您只想要一个警告,表明找不到匹配的元素,则需要将其移出循环。
var match_found = false;
outer:
for (var i = 0; i < 6; i++) {
for (var j = 0; j < 6; j++) {
if (array1[i] == array2[j]) {
document.getElementById("demo").innerHTML =
"Hello World" //Should just print this since elements match
match_found = true;
break outer;
}
}
}
if (!match_found) {
alert("Error");
}
答案 1 :(得分:0)
for循环会很快重复,这就是为什么你不能看到他们在不同的时间做这件事; 你的代码不会同时输出,只是为了快速。
如果您正在考虑延迟,请查看setInterval。
答案 2 :(得分:0)
跳过其他部分。你真的不需要那样做。除非您希望在条件不正确的情况下执行其他操作,否则请省略else语句。
答案 3 :(得分:0)
当你致电break
时,它只会终止内循环。外部循环将继续迭代,将再次检查您的条件,然后运行else
语句。
另一种方法是:
(function() {
for (var i = 0; i < 6; i++) {
for (var j = 0; j < 6; j++) {
if (array1[i] == array2[j]) {
document.getElementById("demo").innerHTML =
"Hello World" //Should just print this since elements match
return;
} else {
alert("Error");
return;
}
}
}
})();
将代码包装在自执行功能中,您可以将break
替换为return
以退出整个功能。