2012-05-12 2 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

Access 속성 :

// 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' \'guest2' ...라는 이름의 속성을 가질 것이라고 믿는 것이 어렵습니다. 이것은 객체의 ownProperty가 아닙니다. :) – gdoron

2

난 당신이 운영자 "의"유용한 것 같아요 :

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

건배를