2016-03-07 147 views
0

为什么要打印else和if语句?检查数组是否与第5行中的元素匹配 他们这么做...所以只是我的if语句应该打印。 但是,我的警报条件打印if条件。我试图重新排列代码,仍然没有运气。为什么我的if和else语句同时打印?

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

请格式化该代码..... oO – jdabrowski

+2

那么,六个条件中的五个是虚假的,所以为什么它不提醒?你有什么**循环**,条件运行多次。 – adeneo

+3

'break'语句只会跳出'j'循环,'i'循环不断重复。 – Barmar

回答

0

for循环会很快重复,这就是为什么你不能看到他们在不同的时间做它;你的代码不会同时输出,它只是快速的。

如果您正在寻找延迟,请查看setInterval

0

只需跳过其他部分。你并不是真的需要这个。除非您希望在条件不成立的情况下执行其他操作,否则省略else语句。

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; 
      } 
     } 
    } 
})(); 

结束语在自执行函数的代码允许您与return取代break退出整个功能。

+0

我会尝试..但是如果我需要一个带参数的函数,我该怎么办? – DeVontae

+0

我觉得这两个条件都是真的,这就是为什么他们都不停地出现。一些匹配,一些没有。 – DeVontae

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之前,您会看到一堆警报。

此外,由于您在ifelse块中都有break,因此永远不会超过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"); 
}