दिलचस्प पोस्ट
एचटीएमएल में एक फ़ाइल इनपुट के लिए एक मान कैसे सेट करें? LINQ से XML में नामस्थानों को अनदेखा करें UITableView सेल के अंदर यूआरएल से एसिंक छवि लोडिंग – स्क्रॉलिंग के दौरान छवि को गलत छवि में बदला जाता है एकाधिक स्क्रीन रिज़ॉल्यूशन एक DOM में डुप्लिकेट आईडी की जांच करने के लिए JQuery कैसे गतिशील रूप से संलग्न घटना श्रोता मौजूद है या नहीं? जावा में वस्तुओं की एक सरणी को कैसे प्रारंभ करें GetContext () के बीच का अंतर, getApplicationContext (), getBaseContext () और "यह" क्या एंड्रॉइड पीयर-टू-पीयर एड-हॉक नेटवर्किंग कर सकता है? getResourceAsstream नल रिटर्न मैं सबसे हाल ही में किए गए आदेश के अनुसार जीआईटी की शाखाओं की एक सूची कैसे प्राप्त करूं? दो अलग जावा डेस्कटॉप अनुप्रयोगों के बीच संचार एक HTML बटन बनाने के लिए जो लिंक की तरह कार्य करता है? java.lang.NoClassDefFound त्रुटि: कक्षा XXX को प्रारंभ नहीं किया जा सका क्या मुझे कंटेनरों में ऑब्जेक्ट, ऑब्जेक्ट्स या ऑब्जेक्ट्स को स्टोर करना चाहिए?

जावास्क्रिप्ट "वेरिएबल वैरिएबल": कैसे एक अन्य चर पर आधारित चर निर्दिष्ट करें?

मेरे पास जावास्क्रिप्ट में वैश्विक काउंटर चर का एक सेट है:

var counter_0 = 0; var counter_1 = 0; var counter_2 = 0; 

आदि

मेरे पास तब एक जावास्क्रिप्ट फ़ंक्शन है जो एक 'इंडेक्स' संख्या को स्वीकार करता है जो उन वैश्विक काउंटरों के लिए मैप करता है इस फ़ंक्शन के अंदर, मुझे उन वैश्विक काउंटरों को पढ़ना और लिखना होगा जो फ़ंक्शन में पास किए गए 'अनुक्रमणिका' मान का उपयोग करते हैं।

मैं इसे कैसे काम करना चाहूंगा, लेकिन यह बिल्कुल बिल्कुल काम नहीं करता है:

 function process(index) { // do some processing // if 'index' == 0, then this would be incrementing the counter_0 global variable ++counter_+index; if (counter_+index == 13) { // do other stuff } } 

मुझे उम्मीद है कि मैं क्या पूरा करने की कोशिश कर रहा हूं स्पष्ट है। यदि मैं स्पष्ट नहीं करने की कोशिश करता हूँ धन्यवाद।

स्पष्टीकरण संपादित करें:

मैं काउंटर के नाम को बढ़ाने की कोशिश नहीं कर रहा हूं, बल्कि उस काउंटर में होने वाले मान में

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट "वेरिएबल वैरिएबल": कैसे एक अन्य चर पर आधारित चर निर्दिष्ट करें?"

मेरे लिए एक सरणी की तरह लग रहा है, या मैं कुछ याद कर रहा हूँ?

 var counters = [0,0,0]; function process(index) { ++counters[index]; /* or ++counters[index]+index, not sure what you want to do */ if (counters[index] === 13) { /* do stuff */ } } 

eval() JavaScript फ़ंक्शन आपको यह पूरा करने की अनुमति देगा। हालांकि यह आमतौर पर पर frowned है। आपका प्रश्न स्पष्ट रूप से सरणियों को बाहर नहीं किया था आपके द्वारा वर्णन किए गए पैटर्न के लिए निश्चित रूप से एरेज़ अधिक उपयुक्त होंगे

 function process(index) { // do some processing var counter; eval('counter = ++counter_'+index); if (counter == 13) { // do other stuff } } 

सुनिश्चित करें कि सूचकांक वास्तव में एक पूर्णांक है, अन्यथा तबाही फिर सकता है।

संपादित करें : अन्य ने बताया है कि यदि आप कर सकते हैं तो आपको एक सरणी का उपयोग करना चाहिए। लेकिन अगर आप नामित वैश्विक वैरिएबल के साथ जुड़े हुए हैं तो उपरोक्त दृष्टिकोण काम करेगा।

संपादित करें : बॉबिन बताते हैं कि आप नाम से ग्लोबल्स तक पहुंचने के लिए विंडो ऑब्जेक्ट का उपयोग कर सकते हैं, और इसलिए निम्न के लिए किसी भी क्रेडिट के योग्य हैं:

 function process(index) { // do some processing var counter = ++window['counter_' + index]; if (counter == 13) { // do other stuff } } 

अन्य जवाबों ने कहा है " eval() " का प्रयोग न करें, लेकिन क्यों नहीं यहां एमडीसी से एक स्पष्टीकरण दिया गया है:

Eval का उपयोग न करें!

eval () एक खतरनाक कार्य है, जो कॉलर के विशेषाधिकारों के साथ संगत कोड को निष्पादित करता है। यदि आप किसी वायरस से प्रभावित हो सकते हैं, तो स्ट्रिंग के साथ eval () चलाते हैं, तो आप अपने वेबपेज / एक्सटेंशन की अनुमति के साथ उपयोगकर्ता के मशीन पर दुर्भावनापूर्ण कोड चला सकते हैं।

सामान्य उपयोग के मामले में eval () के लिए सुरक्षित विकल्प हैं