2011-01-05 15 views
14

मैं निम्नलिखित कोड स्निपेट के साथ नीचे दिखाए गए जेएस ऑब्जेक्ट के माध्यम से लूप करने की कोशिश कर रहा हूं, जबकि इंडेक्स कुंजी और आंतरिक ऑब्जेक्ट दोनों को लाने की आवश्यकता है।jQuery: ऑब्जेक्ट के माध्यम से ठीक से लूपिंग?

मुझे पृथ्वी पर कैसे करना चाहिए, क्योंकि निम्न कार्य नहीं करता है?

वस्तु:

({ prop_1:["1", "2"], 
prop_2:["3", "4"]}) 

मेरी कोड:

$.each(myObject, function(key,valueObj){ 
    alert(key + "/" + valueObj.toSource()); 
}); 

अपेक्षित उत्पादन:

prop_1/(["1", "2"]) 

उत्तर

22

भीतरी वस्तु आप ठीक ला रहे हैं, valueObj है सरणी, इसमें अभी कोई विधि नहीं है .toSource() (लीस पर टी नहीं पार फिर भी ब्राउज़र), तो आप को दूर करता है, तो यह है कि आप एक चेतावनी मिल जाएगा:

$.each(myObject, function(key,valueObj){ 
    alert(key + "/" + valueObj); 
}); 

You can test it out here, फेंक दिया नहीं किया जा है कि उत्पादन सिर्फ है:

prop_1/1,2 
prop_2/3,4 

... एक ऐरे पर डिफ़ॉल्ट .toString() एक कॉमा सीमांकित सूची है, इसलिए आप alert() के साथ देखते हैं। उदाहरण के लिए, यदि आप इसके बजाय alert(key + "/" + valueObj[0]); किया था, आप देखना चाहते हैं:

prop_1/1 
prop_2/3 

... ताकि आप आप सरणी आप चाहते हैं, you can test that here है देख सकते हैं।

3

आप पाश में के लिए एक इस्तेमाल कर सकते हैं:

var myObject = ({ prop_1:["1", "2"], prop_2:["3", "4"]}) 
    for (var key in myObject) { 
     if (myObject.hasOwnProperty(key)) { 
      alert(key + "/" + myObject[key]); 
     } 
    } 
+1

यह रूप में अच्छी तरह काम करता है शामिल होंगे, इसलिए उन्हें 'typeof' साथ फिल्टर करने के लिए सुनिश्चित हो अगर तुम उन्हें नहीं करना चाहती। (जावास्क्रिप्ट, गुड पार्ट्स, 3.7 गणना) – mdup

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