2012-05-12 87 views
3

在JavaScript中是否有一種巧妙的方式來循環訪問數組中對象的屬性名稱?對象循環的動態屬性名稱Javascript

我有幾個屬性的對象,包括guest1到guest100。除了下面的循環之外,我還想另一個循環訪問guestx屬性,而不必長時間寫出它。如果我必須將下面的代碼寫入結果[i] .guest100,這將會是一個很長的列表,這將是一些看起來醜陋的代碼。通過在[]對象屬性語法構造字符串名稱

for (var i = 0; i < results.length; i++) { 
if (results[i].guest1 != "") { 
    Do something; 
} 
if (results[i].guest2 != "") { 
    Do something; 
} 
if (results[i].guest3 != "") { 
    Do something; 
} 
etcetera... 
} 

回答

5

試試這個:

for (var i = 0; i < results.length; i++) { 
    for (var j=0; j <= 100; j++){ 
     if (results[i]["guest" + j] != "") { 
      Do something; 
     } 
    } 
} 
2

訪問屬性:

// inside your results[i] loop.... 
for (var x=1; x<=100; x++) { 
    // verify with .hasOwnProperty() that the guestn property exists 
    if (results[i].hasOwnProperty("guest" + x) { 
    // JS object properties can be accessed as arbitrary strings with [] 
    // Do something with results[i]["guest" + x] 
    console.log(results[i]["guest" + x]); 
    } 
} 
+0

很難相信你會擁有一個名爲'guest1'''''''的屬性,它不是該對象的ownProperty。 :) – gdoron

2

我想你會的 「中」 經營者發現有用:

if (("guest" + i) in results[i]) { /*code*/ } 

乾杯