2012-09-04 19 views
6

मैंeval का उपयोग कर गतिशील चर के लिए मान कैसे असाइन करें?

varname = "data" + newid + "['" + name + "']"; 

कर मैं गतिशील चर को कोई मान निर्दिष्ट करना चाहते हैं गतिशील चर नाम मिला है। मैंने कोशिश की कि

eval(varname) = value; 

लेकिन यह काम नहीं करता है। डायनामिक वैरिएबल को मान असाइन करने के लिए मुझे क्या करने की ज़रूरत है?

+2

'friggin गतिशील चर का उपयोग न करें। वस्तुओं का प्रयोग करें। विशेष रूप से, 'डेटा [नया] [नाम] ', और यह असाइनमेंट के साथ भी काम करता है। – delnan

+0

असल में मैंने अपने जावास्क्रिप्ट में php के माध्यम से कई jsons डाले हैं, जिसमें डेटाफर्स्ट, डेटासेकंड आदि प्रारूप में नाम हैं, इसलिए मेरे जावास्क्रिप्ट कोड में मैं यह तय करने की कोशिश कर रहा हूं कि उनमें से कौन सा चर मुझे –

+0

में हेरफेर करना चाहिए, फिर उस तरह के डेटा उत्पन्न न करें। एक JSON शाब्दिक उत्पन्न करें जहां 'newid' भी समझाया गया है। – delnan

उत्तर

6
var data1 = { a: 200 }; 
var newid = 1; 
var name = "a"; 

var varname = "data"+newid+"['"+name+"']"; 
var value = 3; 
eval(varname + "=" + value); // change data1['a'] from 200 to 3 

कहा करने के बाद कि, eval बुराई है। क्या आप वास्तव में सुनिश्चित हैं कि आपको गतिशील चर का उपयोग करने की आवश्यकता है?

+0

मेरे उद्देश्य के लिए मैं गतिशील चर के लिए एक मान असाइन करना चाहता हूं, इसका मूल्य न प्राप्त करें। मैं इसे कैसे कर सकता हूं? –

+0

@juria_roberts: मैं देखता हूं, 'eval (varname + "=" + value)' का उपयोग करें। गतिशील चर का उपयोग करने के बजाय @ क्विंटिन के समाधान का उपयोग करने पर भी विचार करें। –

+0

पूरी तरह से धन्यवाद काम किया –

7

eval का उपयोग न करें। गतिशील चर का उपयोग न करें।

यदि आपके पास संबंधित डेटा का एक अनियंत्रित समूह है, तो उसे किसी ऑब्जेक्ट में स्टोर करें।

var myData = {}; 
myData[ newid + name ] = value; 

हालांकि ऐसा लगता है कि आप एक गतिशील वस्तु के साथ काम कर रहे हैं तो

myData[ newid ] = myData[ newid ] || {}; 
myData[ newid ][ name ] = value; 
संबंधित मुद्दे

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