2013-04-09 9 views
7

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

तो मेरे पास कोई गुण नहीं है। मैं एक लूप का उपयोग कर इस ऑब्जेक्ट में एकाधिक गुण जोड़ने की कोशिश कर रहा हूं। प्रत्येक संपत्ति पाश को जोड़ा गया कितनी बार पाश रन के आधार पर वस्तु को कई बार में दिखाई देगा, द्वारा 1.

वृद्धि प्रत्येक नए संपत्ति के साथ तो मैं कुछ इस तरह है:

myObject = { }; 

for(i = 0; i < 2; i++){ 
    myObject.propA + i = foo; 
    myObject.propB + i = bar; 
}; 

कौन सा मैं इस तरह कुछ पैदा करना चाहते हैं:

myObject.propA0 = foo; 
myObject.propB0 = bar; 
myObject.propA1 = foo; 
myObject.propB2 = bar; 

लूप पर कितनी बार चलता है इस पर निर्भर करता है कि फ्लाई पर उत्पन्न वस्तुओं का एक अच्छा ढेर देना। लेकिन मुझे ऐसा नहीं लगता है। तो जब मैं इसे बनाया और सौंपा गया हो तो लूप से वैरिएबल को वैरिएबल को कैसे खिला सकता हूं?

उत्तर

19

नाम

myObject['propa' + i] = foo; 
+0

वास्तव में यह बहुत अधिक बाध्य था। –

5

उपयोग गुणों को सेट करने सरणी का उपयोग विधि के लिए वर्ग कोष्ठक अंकन का उपयोग का प्रयास करें।

myObject = { }; 

for(i = 0; i < 2; i++){ 
    myObject['propA' + i] = foo; 
    myObject['propB' + i] = bar; 
}; 
+0

यह भी उपयोगी साबित हुआ है, मेरी वर्तमान परियोजना में कुछ वस्तुएं सरणी के समूहों के रूप में बेहतर काम करती हैं। –

1

आप उपयोग

object['popA'+i]=... 

एक मानक संपत्ति बनाने के लिए हो सकता है या या तो एक गेटर/सेटर संपत्ति का उपयोग करें, इस मामले में यदि आप बाद आप अधिक देता है

Object.defineProperty(object, *propertyname*, *propertyDescriptor*). 

उपयोग करने की आवश्यकता बनाई गई संपत्ति पर विकल्प।

यहाँ सभी विवरण:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty

9

के रूप में अन्य उपयोगकर्ताओं के कहा, तुम ब्रैकेट संकेतन का उपयोग करने के लिए उनके नाम तार द्वारा गुण का उल्लेख करना होगा:

myObject['propA' + i] = 'foo'; 

लेकिन क्यों आप एक का उपयोग नहीं करते वस्तुओं की सरणी, एक ही वस्तु के बजाय समान, क्रमांकित संपत्ति के नाम के साथ? कुछ इस तरह:

var myArray = []; 
for(i = 0; i < 2; i++){ 
    myArray.push({ 
     propA: 'foo', 
     propB: 'bar' 
    }); 
}; 

यह चाहिए उत्पादन:

[ 
    { propA: 'foo', propB: 'bar'}, 
    { propA: 'foo', propB: 'bar'} 
] 

यह रास्ता क्लीनर लग रहा है, मेरी राय में।