2012-06-27 6 views
5

Ok Tôi đang bối rối về điều này. tôi cần phải lặp qua các vì vậy tôi có thể làm cho một danh sách bằng cách loại nên cái gì nhưLàm thế nào để lặp qua các đối tượng lồng nhau trong JS

Kinh doanh Sách

Book 1

Book 2

Book 3

Nấu ăn Sách

vv ..

Nhưng không thể tìm ra cách lặp qua các đối tượng lồng nhau. Có hoặc không có jquery là tốt

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

của tôi trên các thuộc tính của đối tượng. Mỗi giá trị có một mảng các đối tượng. Lặp lại mảng. Điều này đòi hỏi một vòng lặp lồng nhau. Hãy xem https://developer.mozilla.org/en/JavaScript/Guide/Statements#Loop_Statements –

Trả lời

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

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

Ý tưởng tốt là tìm hiểu làm thế nào để làm điều đó mà không cần jQuery đầu tiên.

for(var category in window.books) { 
    if(window.books.hasOwnProperty(category)) { 
    console.log(category); // will log "Business Books" etc. 
    for (var i = 0, j = window.books[category].length; i < j; i++) { 
     console.log("Title: %s, Description: %s", window.books[category][i].Title, window.books[category][i].Description); 
    } 
    } 
} 

Sau đó, bạn có thể sử dụng $.each().

+0

đã đồng ý. Lời khuyên tốt nhất! –

0

Looping với .each() là khá dễ dàng:

$.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>");              
});      

đây là Lặp 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); 
     } 
    });