2012-06-27 20 views
5

में नेस्टेड ऑब्जेक्ट्स के माध्यम से पुन: प्रयास कैसे करें ठीक है, मैं इस पर फंस गया हूं। मैं तो मैं श्रेणी के द्वारा एक सूची बना सकते हैं इन के माध्यम से पुनरावृति करने की जरूरत है ताकि कुछ की तरहजेएस

व्यापार पुस्तकें

पुस्तक 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

दोहराएं है। प्रत्येक के पास ऑब्जेक्ट्स की सरणी होती है। सरणी पर Iterate। इसके लिए लूप के लिए घोंसला की आवश्यकता है। 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 के बिना यह करने के लिए पहले सीखना है ठीक है।

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

फिर आप $.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); 
     } 
    });