2013-02-21 64 views
5

का उपयोग कर वस्तु को संलग्न मैं एक वस्तु है कि मैं गतिशील उदाहरण बाहर का निर्माण किया है:JavaScript श्रृंखला मुख्य/मान जोड़े

obj = {}; 
obj.prop1 = 'something'; 
obj.prop2 = 'something'; 
obj.prop3 = 'something'; 
इसी के साथ

मैं अब एक सरणी से एक आइटम लेगी और उसका उपयोग को परिभाषित करने के लिए एक की जरूरत है दोनों "propX" के समकक्ष और अपने मूल्य

मैंने सोचा कि अगर मैं की तरह

obj.[arr[0]] = some_value; 

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

obj.array_value = some_variable; 
+0

[गतिशील वस्तु संपत्ति नाम] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4244896/dynamic-object-property-name) –

+0

फ़ेलिक्स, अच्छा खोज। मुझे लगता है कि मेरी पोस्ट यहां एक डुप्ली के रूप में है। बस इसे नहीं मिला क्योंकि मैंने खोज के लिए एक बेहतर वाक्यांश के बारे में नहीं सोचा था। धन्यवाद – chris

+0

कोई चिंता नहीं। वास्तव में यह एक आम सवाल है। आपको मेरा क्यू/यहां भी जानकारीपूर्ण मिल सकता है: http://stackoverflow.com/questions/11922383/i-have-a-nested-data-structure-json-how-can-i-access-a- विशिष्ट-value । –

उत्तर

8

डॉट को हटाएं।

obj[arr[0]] = some_value; 

मैं आपको एमडीएन से Working with objects पढ़ने का सुझाव देता हूं।

+0

क्या ऑब्जेक्ट को एरे में जोड़ देगा या उसे ऑब्जेक्ट के रूप में छोड़ देगा? – chris

+0

@chris: यह ऑब्जेक्ट में 'some_value' जोड़ देगा और संपत्ति का नाम 'arr [0]' का मान होगा। शायद आप बात * ब्रैकेट नोटेशन * किसी भी तरह से सरणी से संबंधित है, लेकिन यह नहीं है। यह गुणों का उपयोग करने का एक अलग तरीका है। –

+0

मुझे इसे उदाहरण में प्रदान करना चाहिए था। लेकिन एक हार्डकोडेड सरणी है जो एक इंडेक्स के रूप में काम करती है जिसे हम समय के साथ जोड़ सकते हैं, ताकि भविष्य में सरणी संदर्भ में प्रदान किए गए सभी संदर्भों के लिए खोज करे, हम इसे सरणी स्तर पर बदल सकते हैं बल्कि पूरे कोड को बदल सकते हैं आधार। – chris

3

आप की कोशिश कर सकते

obj[arr[0]] = some_value; 

अर्थात ड्रॉप डॉट :)

3

आप लगभग ठीक कह रहे हैं, लेकिन आप केवल दूर करने के लिए की जरूरत है। लाइन से:

obj। [arr [0]] = some_value;

पढ़ना चाहिए

obj [आगमन [0]] = some_value;

+3

@ अमरेश्वर: लेकिन यह गलत होगा। यह 'obj.arr' में संग्रहीत सरणी का पहला तत्व सेट करने का प्रयास करेगा। –

+0

@FelixKling क्षमा करें मुझे सवाल गलत मिला – Amareswar