2009-07-08 15 views

उत्तर

203
$.each({ name: "John", lang: "JS" }, function(i, n){ 
    alert("Name: " + i + ", Value: " + n); 
}); 

each

+0

इसके अलावा मुझे लगता है, कि 'चेतावनी n' intirely सही नहीं है । कम से कम यह 'n.name' – Eugene

+2

@Eugene हो सकता है: मुझे आपका अंक नहीं मिलता है। प्रत्येक फ़ंक्शन एक सरणी या ऑब्जेक्ट को पहला तर्क और एक फ़ंक्शन के रूप में लेता है। यह फ़ंक्शन ऑब्जेक्ट में सरणी/प्रत्येक प्रॉपर्टी में प्रत्येक तत्व के लिए कैल्ड हो जाता है। हर बार समारोह कहलाता है, यह सूचकांक और मूल्य/नाम और मूल्य तर्क के रूप में पास हो जाता है। मेरे उदाहरण में पैरामीटर "एन" दो स्ट्रिंग "जॉन" और "जेएस" हैं। "नाम" संपत्ति "अपरिभाषित" होगी। –

+0

हाँ। मैं यहाँ गलत था। किसी भी तरह मैंने सोचा, कि वस्तु में हर संपत्ति एक और वस्तु है उदाहरण के लिए संपत्ति का नाम जो एक स्ट्रिंग है। संक्षेप में यह सब गलत है। बहुत अफसोस। :) – Eugene

51

तुम बस सरणियों के लिए भी और नहीं वस्तुओं के लिए each उपयोग कर सकते हैं:

var obj = { 
    foo: "bar", 
    baz: "quux" 
}; 
jQuery.each(obj, function(name, value) { 
    alert(name + ": " + value); 
}); 
+0

बस बहुत बढ़िया धन्यवाद @ गम्बो :) –

8

इस विधि वस्तु गुण के माध्यम से चलना और बढ़ती मांगपत्र के साथ कंसोल के लिए उन्हें लिखना होगा:

function enumerate(o,s){ 

    //if s isn't defined, set it to an empty string 
    s = typeof s !== 'undefined' ? s : ""; 

    //iterate across o, passing keys as k and values as v 
    $.each(o, function(k,v){ 

     //if v has nested depth 
     if(typeof v == "object"){ 

      //write the key to the console 
      console.log(s+k+": "); 

      //recursively call enumerate on the nested properties 
      enumerate(v,s+" "); 

     } else { 

      //log the key & value 
      console.log(s+k+": "+String(v)); 
     } 
    }); 
} 

बस इसे ऑब्जेक्ट पास करें आप के माध्यम से पुनरावृति करना चाहते हैं:

var response = $.ajax({ 
    url: myurl, 
    dataType: "json" 
}) 
.done(function(a){ 
    console.log("Returned values:"); 
    enumerate(a); 
}) 
.fail(function(){ console.log("request failed");}); 
+0

इसका उपयोग करते समय एक मान शून्य त्रुटियों के साथ "अनकॉट टाइप एरर: संपत्ति को नहीं पढ़ सकता है" – JustinStolle

3

देर है, लेकिन Object.keys तरह का उपयोग करके किया जा सकता है,

var a={key1:'value1',key2:'value2',key3:'value3',key4:'value4'}, 
 
    ulkeys=document.getElementById('object-keys'),str=''; 
 
var keys = Object.keys(a); 
 
for(i=0,l=keys.length;i<l;i++){ 
 
    str+= '<li>'+keys[i]+' : '+a[keys[i]]+'</li>'; 
 
} 
 
ulkeys.innerHTML=str;
<ul id="object-keys"></ul>

संबंधित मुद्दे