2012-06-27 24 views
5

Tamam, bu konuda çok şaşırdım. Ben bu yüzden kategoriye göre bir liste yapabilir bu yineleme yapmak gerek bu yüzden bir şeyİç içe geçmiş nesneler aracılığıyla yineleme JS

İş Kitapları

Kitap 1

Kitap 2

Kitap 3

Cooking gibi Kitaplar

vb.

Ancak yuvalanmış nesneler boyunca yineleme nasıl yapılacağını anlayamadım. Ile veya jquery olmadan

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

Bıkmadan olduğunu. Her birinin değeri bir nesne dizisine sahiptir. Dizi üzerinde yineleyin. Bu iç içe geçmiş bir döngü gerektirir. Üzerinde anlaşılan https://developer.mozilla.org/en/JavaScript/Guide/Statements#Loop_Statements –

cevap

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

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

İyi fikri ilk jQuery olmadan bunu nasıl öğrenmektir gayet iyi.

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); 
    } 
    } 
} 

Daha sonra $.each()'u kullanabilirsiniz. .each ile Döngü

+0

adresine bir göz atın. en iyi tavsiye! –

0

() oldukça kolaydır:

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

burada nesnesinin özellikleri üzerinde benim 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); 
     } 
    });