JQuery का उपयोग करके एक जावास्क्रिप्ट ऑब्जेक्ट के गुणों को Iterating


116

क्या किसी वस्तु के सदस्यों पर पुनरावृत्ति करने का एक jQuery तरीका है, जैसे:

    for (var member in obj) {
        ...
    }

मैं सिर्फ forअपने प्यारे jQuery संकेतन के बीच से बाहर रहना पसंद नहीं करता !

जवाबों:


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

से प्रत्येक


इसके अलावा, मुझे लगता है कि चेतावनी nसही नहीं है। कम से कम यह हो सकता हैn.name
यूजीन

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

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

4
प्रत्येक को बहुत अधिक सुविधाएँ मिली हैं: thisयह भी है nreturn falseप्रत्येक लूप को तोड़ता है ...
andy

56

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

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

9

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

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

इसका उपयोग तब किया जाता है जब कोई मान अशक्त
टाइप

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>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.