2015-08-13 40 views
5

我有像這樣的對象:如何知道你在for循環遍歷對象的最後一遍?

var obj = { thing_1 : false, 
      thing_2 : false, 
      thing_3 : true, 
      thing_4 : false, 
      thing_5 : true 
      } 

我現在循環通過這個對象和搜索對象的密鑰是真實的,就像這樣:

for (value in obj){ 
    if (obj[value] === true){ 
     // do something 
    } 
    } 

我怎麼知道我什麼時候有達到了最後一個循環,其中一個鍵是真的?

+0

你爲什麼想知道,對於 –

+0

@VivekGupta普遍使用的情況下,任何具體的理由:字符串連接,而不是追加到最後一個值 – CodingIntrigue

+0

@VivekGupta原因是我做的每環通的異步調用,並所以我想知道最後一次異步調用何時實際完成。 – Squrler

回答

2

你可以當你與最後一個工作countobject元素與Object.keys(obj).length,然後檢查循環裏面找到。

Object.keys(obj)方法返回給定的對象自身的枚舉的屬性的陣列,在相同的順序,通過提供一種用於... in循環(不同之處在於一個用於-in循環枚舉在屬性原型鏈也是如此)。

例子:

var obj = { 
    thing_1: false, 
    thing_2: false, 
    thing_3: true, 
    thing_4: false, 
    thing_5: true 
}; 

var count = 0; 
for (var value in obj) { 

    count++; 

    if (count == Object.keys(obj).length) { 
    console.log('And the last one is:'); 
    } 

    console.log(obj[value]); 

} 

注:正如你可以想像,這有一些問題IE < 9 ...
你可以使自己的自定義功能或polifill繼續.. 。
閱讀更多關於in this related question