जावास्क्रिप्ट में एक वस्तु प्रोटोटाइप का उपयोग कर के हर संपत्ति पर पुनरावृत्ति?

वोट
89

वहाँ एक वस्तु प्रोटोटाइप जावास्क्रिप्ट ढांचे का उपयोग कर के हर संपत्ति पर पुनरावृति के लिए एक रास्ता है?

यहाँ की स्थिति है: मैं JSON में एक AJAX प्रतिक्रिया है कि कुछ इस तरह दिखता हो रही है:

{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}

अगर मैं एक चर करने के लिए कि json प्रतिक्रिया का मूल्यांकन response, मैं में एक संपत्ति पर दोहराने में सक्षम होना चाहते हैं response.barobjवस्तु जो अनुक्रमित सत्य हैं और जो झूठे हैं देखने के लिए।

प्रोटोटाइप दोनों है Object.keys()और Object.values()लेकिन अजीब तरह से एक सरल नहीं लगता Object.each()समारोह! मैं Object.keys () और Object.values () और परस्पर-संदर्भ अन्य मैं एक के माध्यम से पुनरावृति के रूप में के परिणामों ले सकता है, लेकिन यह है कि इस तरह के एक हैक है कि मुझे यकीन है कि वहाँ यह करने के लिए एक उचित तरीका है कर रहा हूँ है!

25/02/2009 को 20:15
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
0

आप चाबियाँ पर पुनरावृति और वर्ग कोष्ठक का उपयोग कर मूल्यों को प्राप्त करना चाहिए।

देखें: मैं एक जावास्क्रिप्ट ऑब्जेक्ट के गुणों को कैसे की गणना करते हैं?

संपादित करें: जाहिर है, इस सवाल का डुप्लिकेट बनाता है।

25/02/2009 को 20:32
का स्रोत उपयोगकर्ता

वोट
42

आप पहली बार के लिए है एक प्रोटोटाइप हैश करने के लिए अपने ऑब्जेक्ट शाब्दिक कन्वर्ट :

// Store your object literal
var obj = {foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}

// Iterate like so.  The $H() construct creates a prototype-extended Hash.
$H(obj).each(function(pair){
  alert(pair.key);
  alert(pair.value);
});
25/02/2009 को 20:34
का स्रोत उपयोगकर्ता

वोट
547

प्रोटोटाइप यहाँ कोई ज़रूरत नहीं है: जावास्क्रिप्ट है for..inछोरों। आप यह सुनिश्चित करें कि कोई भी साथ गड़बड़ नहीं कर रहे हैं Object.prototype, की जांच hasOwnProperty()के साथ-साथ यानी,

for(var prop in obj) {
    if(obj.hasOwnProperty(prop))
        doSomethingWith(obj[prop]);
}
25/02/2009 को 21:52
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more