2012-01-06 12 views
6

मूल रूप से मैं एक पाश मैं incrementing है, और मुझे ऐसा करना चाहते हैं:गतिशील कुंजी नामों के साथ मैं जावास्क्रिप्ट सहयोगी सरणी {} कैसे बना सकता हूं?

var fish = { 'fishInfo[' + i + '][0]': 6 }; 

लेकिन यह काम नहीं करता।

कोई विचार यह कैसे करना है? मैं परिणाम

fish is { 'fishInfo[0][0]': 6 }; 
fish is { 'fishInfo[1][0]': 6 }; 
fish is { 'fishInfo[2][0]': 6 }; 

होना चाहता हूँ आदि

मैं $ .merge उपयोग कर रहा हूँ अगर आपको लगता है क्यों पृथ्वी पर वह क्या कर रहा है उन्हें गठबंधन करने के लिए है कि :)

+2

क्या या तो (क) सिर्फ एक सरणी बनाने के साथ गलत क्या है; या (बी) काउंटर उत्पन्न करने के लिए एक पाश का उपयोग कर? आपके पास क्या समस्या है? – Marcin

उत्तर

9

एक खाली वस्तु घोषित करें, तो आप गतिशील रूप से गुणों को असाइन करने के लिए सरणी वाक्यविन्यास का उपयोग कर सकते हैं।

var fish = {}; 

fish[<propertyName>] = <value>; 
+1

चीयर्स ने इसे हल किया। और मुझे $ .merge के बजाय $ .extend की आवश्यकता है :) – NibblyPig

2

वस्तु के साथ किसी भी गतिशील सामान के लिए कुंजी, आपको ब्रैकेट नोटेशन की आवश्यकता है।

var fish = { }; 

fish[ 'fishInfo[' + i + '][0]' ] = 6; 
0

जावास्क्रिप्ट में बहुआयामी Arrays एक सरणी के अंदर एक सरणी को सहेजकर बनाए जाते हैं।

प्रयास करें:

var multiDimArray = []; 
for(var x=0; x<10; x++){ 
    multiDimArray[x]=[]; 
    multiDimArray[x][0]=6; 
} 

फिडल exampe: http://jsfiddle.net/CyK6E/

5

यह करें:

var fish = {}; 
fish['fishInfo[' + i + '][0]'] = 6; 

यह काम करता है क्योंकि आप इस तरह वर्ग कोष्ठक अंकन का उपयोग वस्तुओं के लिए & लिखने पढ़ सकते हैं:

my_object[key] = value; 

और इस:

alert(my_object[key]); 
संबंधित मुद्दे