2016-03-07 146 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"); 
}