दिलचस्प पोस्ट
PHP: एक श्रेणी के लिए एक सरणी बनाएँ JavaFX – एक नियंत्रक में किसी अन्य नियंत्रक से विधि का उपयोग कैसे करें? एंड्रॉइड 6.0 (मार्शमॉल) के साथ अपाचे एचटीटीपी कनेक्शन क्या हस्ताक्षरित इंटिजर्स पर बिटवर्ड ऑपरेशन के परिणाम परिभाषित किए गए हैं? जब मुझे कक्षा में स्थिर तरीके का उपयोग करना चाहिए और लाभ क्या हैं? मैं कोडा के माध्यम से पायथन ओपनसीवी कैसे स्थापित करूं? PHP में लूप प्रदर्शन के लिए पदावनत: mysql_connect () एंड्रॉइड: मैं स्क्रीन पर वर्तमान खोला आवेदन नाम कैसे प्राप्त कर सकता हूं .NET WebClient ऑब्जेक्ट पर समयबाह्य कैसे परिवर्तित करें XMLHttpRequest स्थिति 0 (responseText खाली है) टाइम पिक्चरडायलोग और AM या प्रधानमंत्री मैं हास्केल में पठनीय / लिखने योग्य बनने के लिए एकाधिक फ़ाइलों / सॉकेट कैसे देख सकता हूं? मैं प्रोग्राम की फाइल अनुमतियों को कैसे बदलूं? इसका क्या मतलब है? "पार्स त्रुटि: सिंटैक्स त्रुटि, अप्रत्याशित T_PAAMAYIM_NEKUDOTAYIM"

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

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

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 () के लिए सुरक्षित विकल्प हैं