मैंजावास्क्रिप्ट: गतिशील चर नाम
var data = { 'name': { 'heading': 'Name', 'required': 1, 'type': 'String' },
'profile': {
'age': { 'heading': 'Age', 'required': 0, 'type': 'Number' },
'phone': { 'heading': 'Phone', 'required': 0, 'type': 'String'},
'city': { 'heading': 'City', 'required': 0, 'type': 'String'},
},
'status': { 'heading': 'Status', 'required': 1, 'type': 'String' }
};
यहाँ की तरह एक नेस्ट जावास्क्रिप्ट वस्तु है का उपयोग कर JSON डेटा में प्रवेश नेस्टेड मानों, मैं data.profile.age.type या data.name.type जैसे क्षेत्रों तक पहुँच सकते हैं । कोई समस्या नहीं और यदि मेरे पास गतिशील चर नाम हैं, तो मैं नीचे तक पहुंच सकता हूं। फिर, कोई समस्या नहीं है।
f = 'profile'; data[f].age.type
लेकिन, यहाँ मैं 'नाम', 'profile.age', 'profile.city' आदि और स्पष्ट रूप से मैं उन्हें के रूप में च = 'profile.age' उपयोग नहीं कर सकते जैसे चर नाम है; डेटा [एफ]। टाइप जो काम नहीं करेगा।
क्या कोई मुझे मार्गदर्शन कर सकता है कि उन्हें सबसे आसान और सरल तरीके से कैसे प्राप्त करें (प्राप्त करें/सेट करें)?
नोट: मैंने कोशिश की और यह पाने के लिए काम करता है।
data.get = function(p) { o = this; return eval('o.'+p); };
f = 'profile.age'; data.get(f).name;
हालांकि सेट पर्याप्त सरल प्रतीत नहीं होता है। अगर मुझे पाने और सेट करने के लिए बेहतर समाधान भी हैं, तो कृपया मुझे बताएं।
आप इतने पर इस सवाल पूछने के लिए सही थे। जब भी आप जावास्क्रिप्ट में eval का उपयोग कर खुद को पाते हैं, तो आप लगभग निश्चित रूप से गलत काम कर रहे हैं। –
मुझे eval के बारे में बताने के लिए धन्यवाद। बुरा हो सकता है बुराई है! :-) – rsmoorthy
आपने यह कहा था। यहां दिए गए अंतिम सुझाव पर एक नज़र डालें: http://javascript.crockford.com/code.html –