2012-06-27 3 views
5

좋아,이 하나에 난처한있어. 나는 그래서이 카테고리의 목록을 만들 수 있습니다 이러한 반복 할 필요가 그래서 뭔가JS에서 중첩 된 객체를 반복하는 방법

비즈니스 책

1 권

2 권

3 권

요리 등 책

그러나 중첩 된 개체를 반복하는 방법을 알아낼 수 없습니다. 로 또는 JQuery와없는 는

window.books = { 
    "Business Books": [ 
     { 
      Title: "Finance 101", 
      Description: "Info for Finance 101 book goes here." 
     }, 
     { 
      Title: "Economics 123", 
      Description: "Info for Economics 123 book goes here." 
     }, 
     { 
      Title: "Statistics for Beginners", 
      Description: "Learn about Statistics." 
     } 
    ], 
    "Cooking Books": [ 
     { 
      Title: "Lowfat Treats", 
      Description: "Eat a lowfat Diet" 
     }, 
     { 
      Title: "Chocolate Lovers", 
      Description: "Eat a lot of chocolate" 
     }, 
     { 
      Title: "Book of Brownies", 
      Description: "Stuff about Brownies" 
     } 
    ], 
    "IT Books": [ 
     { 
      Title: "Windows XP", 
      Description: "Please go away" 
     }, 
     { 
      Title: "Linux", 
      Description: "A how to guide." 
     }, 
     { 
      Title: "Unix", 
      Description: "All about Unix." 
     }, 
     { 
      Title: "Mac", 
      Description: "Costs too much." 
     } 
    ], 
}; 
+0

으로 반복이다. 각각은 객체의 배열을 값으로 가진다. 배열을 반복합니다. 이를 위해 중첩 된 for 루프가 필요합니다. https://developer.mozilla.org/en/JavaScript/Guide/Statements#Loop_Statements –

답변

1
jQuery.each(window.books, function(category, items) { 
    alert(category); 

    jQuery.each(items, function(idx, book) { 
     alert(category + ': ' + book.Title) 
    }); 
}); 
9

좋은 생각이 먼저 jQuery를하지 않고 작업을 수행하는 방법을 배우는 것입니다 괜찮습니다.

그런 다음 $.each()을 사용할 수 있습니다. .each로 반복

+0

에 동의했습니다. 최고의 충고! –

0

()는 매우 간단합니다 :

$.each(window.books, function(category, books) {          
    $("#books").append("<p>" + category + "</p><ul>");        
    $.each(books, function(i, book) {            
     $("#books").append("<li>" + book.Title + ": " + book.Description + "</li>"); 
    });                    
    $("#books").append("</ul>");              
});      

여기 객체의 속성 내 jsFiddle

2
$.each(window.books,function(k,v){ // k ==== key, v === value 
     // Prints category 
     console.log(k); 

     //Loops through category 
     for(i=0,len=v.length;i<len;i++){ 
      console.log(v[i].Title); 
      console.log(v[i].Description); 
     } 
    }); 
관련 문제