2012-06-27 8 views
5

Ok, sono perplesso su questo. ho bisogno di scorrere questi in modo da poter fare una lista in base alla categoria in modo da qualcosa comeCome eseguire l'iterazione degli oggetti nidificati in JS

Libri di affari

Book 1

Book 2

Prenota 3

cottura Libri

ecc.

Ma non è riuscito a capire come iterare attraverso gli oggetti nidificati. Con o senza jQuery è bene

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

un'iterazione sulle proprietà dell'oggetto. Ognuno ha come valore una matrice di oggetti. Scorrere l'array. Ciò richiede un ciclo annidato. Dai un'occhiata a https://developer.mozilla.org/en/JavaScript/Guide/Statements#Loop_Statements –

risposta

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

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

buona idea è quella di imparare a farlo senza jQuery prima.

Quindi è possibile utilizzare $.each().

+0

concordato. miglior consiglio! –

0

Looping con .each() è piuttosto semplice:

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

qui è la mia 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); 
     } 
    }); 
Problemi correlati