2012-08-04 9 views
5

चलें कहते हैं कि मैं एक चर के लिए नामों की एक सरणी है:एक सरणी से गतिशील रूप से जावास्क्रिप्ट चर बनाने के लिए कैसे?

var varNames = new Array("name1","name2","name3"); 

मैं सिर्फ varNames सरणी के माध्यम से पाशन द्वारा var name1, var name2 और var name3 कैसे बनाऊं?

+2

यह आमतौर पर एक अच्छा विचार गतिशील वैश्विक चर बनाने के लिए नहीं है। शायद अगर आपने बड़ी तस्वीर का वर्णन किया है तो कोई बेहतर दृष्टिकोण सुझा सकता है। – JJJ

उत्तर

6

यह वैश्विक चर (वैश्विक नामस्थान में, यानी window) बना देगा।

var varNames = ["name1","name2","name3"]; 
for (var i=0;i<varNames.length;i+=1){ 
    window[varNames[i]] = 0; 
} 
name1; //=> 0 

के बाद से वैश्विक चर का उपयोग कर बुरा व्यवहार माना जाता है, तो आप एक custum वस्तु के भीतर चर बना सकते हैं:

var myVariables = {} 
    ,varNames = ["name1","name2","name3"]; 
for (var i=0;i<varNames.length;i+=1){ 
    myVariables[varNames[i]] = 0; 
} 
myVariables.name1; //=> 0 

संपादित करें 2017

es≥6 का उपयोग करना:

const [v1, v2, v3] = ["name1","name2","name3"]; 
console.log(v1); // => name1 
+0

क्या कोई कारण है कि आप i ++ के बजाय i + = 1 का उपयोग करते हैं? – Danejir

+1

इसे डगलस क्रॉकफ़ोर्ड से लिया गया है। वह भ्रम से बचने के लिए '++' ऑपरेटर का उपयोग करने की सलाह देता है जैसे: 'var i = 5; var j = i ++;/* जे अब 5 है और मैं 6 */ var k = ++ i;/* के अब 7 है और मैं 7 */'है – KooiInc

2

आप इसे निम्नानुसार कर सकते हैं। मैंने साबित करने के लिए अलर्ट जोड़े कि आप उन चरों पर एक मूल्य निर्धारित कर सकते हैं।

var varNames = new Array("name1","name2","name3"); 
for(var i = 0; i < varNames.length; i++) { 
    window[varNames[i]] = i; 
} 
alert("name1: " + name1); 
alert("name2: " + name2); 
alert("name3: " + name3); 
1

अपने सवाल का सीधा जवाब होगा - आप इसे eval उपयोग कर सकते हैं:

var varNames = new Array("name1","name2","name3"); 

for (var i=0; i<varNames.length; i++) { 
    var varName = varNames[i]; 
    eval("var "+varName); // would be "var name1" 
} 

कृपया ध्यान दें, हालांकि यह बुरा व्यवहार माना जाता है और आम तौर पर इस तरह के मामले के लिए eval का उपयोग कर के लिए कोई औचित्य है । भी ध्यान रखें कि यह सरणी निम्नलिखित शैली का उपयोग बनाने के लिए और अधिक आम है:

var varNames = ["name1", "name2", "name3"];