2010-06-22 52 views
2

我試圖捕獲forEach循環中的最後一種情況,但所有情況似乎都是假而不是最後一種情況爲真。我的代碼:Javascript If If not Evaluating True

for(var i in networks){ 
    if (i == (networks.length - 1)){ 
     //do stuff 
    } 
} 

怎麼回事?

+0

是您的索引數字(0,1,2,等等),或者是別的喜歡「鮑勃」,「貓」的東西, 「狗」,「富」? – HoLyVieR 2010-06-22 19:14:34

+0

我的索引是數字,當我打印出它時,它從0到(n-1) – 2010-06-22 19:16:43

回答

4

試試這個:

for(var i = 0, j = networks.length; i < j; i++){ 
    if (i == (j - 1)){ 
     //do stuff 
    } 
} 

我個人鄙視在JavaScript中for...in循環,因爲它帶來到圖片一大堆不需要的特性,這是不可靠的 - 需要一噸理智的檢查,以確保當前屬性不是不需要的類型或未定義的類型。我可以繼續談論這件事。我建議你唯一一次使用認爲是當你迭代對象並且你需要關鍵值時。

+2

+1 - 如果你需要知道「in ... in」語法中「for ... in」語法的語法糖是否會很快失去光澤循環你是相對於開始/結束。 – inkedmn 2010-06-22 19:08:47

+1

奇特。爲什麼這是可行的,但是使用'for in'中的索引不起作用?我本來希望使用'for in'來提高可讀性,但如果這是它的唯一工作方式,那就這樣吧。 – 2010-06-22 19:13:01

+2

請注意'for in'會遍歷每個對象並返回關聯數組中的鍵,不管它是整數,字符串等。失敗的一個原因是'網絡'不使用整數作爲鍵。 – 2010-06-22 19:19:28

1

如果網絡是從0到n的數字的數組,則應該有效。 ;)如果不是的話,你可能要考慮一個標準for循環:

for(var i = 0; i < networks.length; i++) { 
    var network = networks[i]; // in case you need this. 
    if (i == (networks.length - 1)){ 
     //do stuff 
    } 
}