दिलचस्प पोस्ट
कैसे __Contains__ ndarrays के लिए काम करता है? mySQL – तीन टेबल्स से डेटा और स्तंभ का उपयोग करते हुए एक नई तालिका बनाएँ TextView में url का Android सक्रिय लिंक SQL Server IN फ़ंक्शन में कॉमा से सीमांकित मानों से भरा एक वर्चार पास करना आवेदन तक प्रतीक्षा करें। गणना करें समाप्त हो गया है वस्तुओं की एक सूची को फेरबदल करना JPQL कन्स्ट्रक्टर एक्सप्रेशन – org.hibernate.hql.ast.QuerySyntaxException: तालिका मैप नहीं है Dnotify / inotify कमांड का उपयोग करके डायरेक्टरी की लगातार निगरानी कैसे करें JRBeanCollectionDataSource: Java.util से डेटा कैसे दिखाएगा। JavaBean से सूची? कौन से एक पूर्णांक संख्या को 2 से विभाजित करने के लिए उपयोग करने के लिए बेहतर विकल्प है? जावास्क्रिप्ट अपवाद हैंडलिंग दुभाषिया कंसोल को कैसे साफ़ करें? क्या आम विंडोज़ कंपलर्स पर स्टड :: लोकेल नाम उपलब्ध हैं? एएसपी.नेट एमवीसी रेजर एन्कोडिंग के बिना रेंडर करता है मैं jQuery के साथ पूरे पृष्ठ के HTML कैसे प्राप्त करूं?

मैं जावास्क्रिप्ट ऑब्जेक्ट वैरिएबल में डुनेबल की गतिशील कुंजी कैसे बनाऊं?

मैं इस तरह से कुछ कोशिश कर रहा हूँ, लेकिन यह उदाहरण काम नहीं करता है

jsObj = {}; for (var i = 1; i <= 10; i++) { jsObj{'key' + i} = 'example ' + 1; } 

इस तरह एक गतिशील कुंजी बनाने के लिए मैं क्या कर सकता हूँ?

Solutions Collecting From Web of "मैं जावास्क्रिप्ट ऑब्जेक्ट वैरिएबल में डुनेबल की गतिशील कुंजी कैसे बनाऊं?"

वर्ग कोष्ठक:

 jsObj['key' + i] = 'example' + 1; 

जावास्क्रिप्ट में, सभी सरणी ऑब्जेक्ट हैं, लेकिन सभी ऑब्जेक्ट्स सरणी नहीं हैं प्राथमिक अंतर (और जो सीधे जावास्क्रिप्ट और सादे ऑब्जेक्ट्स के साथ नकल करना बहुत मुश्किल है) यह है कि सरणी उदाहरण length संपत्ति को बनाए रखता है, जिससे वह संपत्ति के अंकीय मूल्य को दर्शाता है जिसका नाम संख्यात्मक होता है और जिसका मान, जब किसी संख्या में परिवर्तित किया जाता है, ऐसे सभी गुणों में सबसे बड़ा है यह वास्तव में अजीब लगता है, लेकिन इसका मतलब यह है कि सरणी उदाहरण दिए गए हैं, "0" , "5" , "207" , और इसी तरह के नामों वाले गुणों का विशेष रूप से इलाज किया जाता है, क्योंकि उनका अस्तित्व length का मूल्य निर्धारित करता है और, उसके ऊपर, length का मान ऐसे गुणों को हटाने के लिए सेट किया जा सकता है सरणी की length को 0 प्रभावी रूप से सभी गुणों को निकालता है, जिनके नाम पूरे संख्या की तरह दिखते हैं।

ठीक है, तो यही एक सरणी विशेष बनाता है हालांकि, जावास्क्रिप्ट [ ] ऑपरेटर कैसे काम करता है, इसके साथ में कुछ भी नहीं है। वह ऑपरेटर एक ऑब्जेक्ट प्रॉपर्टी एक्सेस मैकेनिज़्म है जो किसी ऑब्जेक्ट पर काम करता है। यह ध्यान रखना महत्वपूर्ण है कि उस संख्यात्मक सरणी संपत्ति के नाम विशेष रूप से नहीं हैं, जहां तक ​​सरल संपत्ति पहुंच जाता है। वे सिर्फ तार हैं जो संख्याओं की तरह लगते हैं, लेकिन जावास्क्रिप्ट ऑब्जेक्ट प्रॉपर्टी नाम किसी भी प्रकार की स्ट्रिंग आप पसंद कर सकते हैं।

इस प्रकार, जिस तरह से [ ] ऑपरेटर एक सरणी के माध्यम से चलने वाली लूप में काम करता है:

 for (var i = 0; i < myArray.length; ++i) { var value = myArray[i]; // property access // ... } 

वास्तव में कोई रास्ता नहीं है [ ] एक संपत्ति का उपयोग करते समय काम करता है जिसका नाम कुछ गणना स्ट्रिंग है:

 var value = jsObj["key" + i]; 

[ ] ऑपरेटर वहाँ दोनों उदाहरणों में ठीक उसी चीज कर रहा है तथ्य यह है कि एक मामले में शामिल ऑब्जेक्ट एक अरैम होता है, दूसरे शब्दों में, महत्वहीन है।

[ ] का उपयोग करके संपत्ति के मूल्यों को सेट करते समय, कहानी एक ही है, जबकि length संपत्ति बनाए रखने के विशेष व्यवहार को छोड़कर यदि आप सरणी उदाहरण पर एक संख्यात्मक कुंजी के साथ एक संपत्ति सेट करते हैं:

 myArray[200] = 5; 

फिर (मान लें कि "200" सबसे बड़ी संख्यात्मक संपत्ति का नाम है) length संपत्ति 201 के लिए संपत्ति असाइनमेंट के साइड-प्रभाव के रूप में अद्यतन किया जाएगा। यदि एक ही बात एक सादे वस्तु के लिए किया जाता है, हालांकि:

 myObj[200] = 5; 

ऐसा कोई साइड इफेक्ट नहीं है दोनों सरणी और वस्तु का "200" नामक संपत्ति को मान 5 सेट किया जाएगा अन्यथा ठीक उसी तरह से।

कोई सोच सकता है कि क्योंकि उस length व्यवहार काफ़ी आसान है, आप सादे ऑब्जेक्ट्स के बजाय ऐरे कन्स्ट्रक्टर के सभी ऑब्जेक्ट उदाहरणों को भी बना सकते हैं। इसके बारे में सीधा गलत बात नहीं है (हालांकि यह भ्रामक हो सकता है, खासकर कुछ अन्य भाषाओं से परिचित लोगों के लिए, कुछ गुणों को length में शामिल करने के लिए, लेकिन अन्य नहीं)। हालांकि, यदि आप JSON सीरियलाइजेशन (एक काफी सामान्य बात) के साथ काम कर रहे हैं, तो समझ लें कि सरणी उदाहरणों को ऐसे तरीके से क्रमबद्ध किया जाता है जो केवल संख्यात्मक-नामित गुणों को शामिल करता है सरणी में जोड़े जाने वाले अन्य गुण कभी सीरियल किए गए जेएसओएन फॉर्म में नहीं दिखाई देंगे। उदाहरण के लिए:

 var obj = []; obj[0] = "hello world"; obj["something"] = 5000; var objJSON = JSON.stringify(obj); 

"objJSON" का मान एक स्ट्रिंग होगा जिसमें केवल ["hello world"] ; "कुछ" संपत्ति खो जाएगी

ES2015:

यदि आप ईएस 6 जावास्क्रिप्ट सुविधाओं का उपयोग करने में सक्षम हैं, तो आप इसे आसानी से संभालने के लिए कम्प्यूटेंट प्रॉपर्टी नाम का उपयोग कर सकते हैं:

 var key = 'DYNAMIC_KEY', obj = { [key]: 'ES6!' }; console.log(obj); // > { 'DYNAMIC_KEY': 'ES6!' } 

जावास्क्रिप्ट में एसोसिएटिव एरेन्स सचमुच काम नहीं करते हैं क्योंकि वे अन्य भाषाओं में करते हैं। for each बयान के लिए जटिल हैं (क्योंकि वे विरासत में मिली प्रोटोटाइप गुणों की गणना करते हैं)। आप एक ऑब्जेक्ट / एसोसिएटिव सरणी पर गुणों को घोषित कर सकते हैं जैसे पॉइंटी का उल्लेख किया गया है, लेकिन वास्तव में इस प्रकार की चीज़ के लिए आपको push विधि के साथ एक सरणी का उपयोग करना चाहिए:

 jsArr = []; for (var i = 1; i <= 10; i++) { jsArr.push('example ' + 1); } 

बस यह नहीं भूलें कि अनुक्रमित सरणियां शून्य-आधारित हैं, इसलिए पहला तत्व जेएसएआर [0] होगा, जेएसएआरआर [1] नहीं होगा।