2010-11-07 6 views
9

मैं लूप के अंदर Parameters नामक ऑब्जेक्ट शब्दशः नामित करने के प्रयास में कोड के इस टुकड़े (नीचे दिखाया गया) का उपयोग कर रहा हूं। मुझे जोड़ी को i वैरिएबल को दोहराने वाले लूप के साथ संयोजन के रूप में असाइन किया जाना चाहिए, जैसे: {key_1:chunks[1],key_2:chunks[2]}। हालांकि, मेरा कोड काम नहीं कर रहा है। 'key_'+i शाब्दिक में परिलक्षित नहीं किया जा रहा है।गतिशील कुंजी में गुजर रहा है: किसी ऑब्जेक्ट को अक्षर जोड़े अक्षर?

कुछ ऐसा है जो मैं यहां याद कर रहा हूं, जाहिर है। क्या कोई मुझे बता सकता है कि यह क्या है? ... धन्यवाद।

var Parameters=[]; 
var len = chunks.length; 
for (var i = 0; i < len; i++) { 
    var key='key_'+i 
    obj= { key : chunks[i]}; 
    Parameters.push(obj) 
} 
+1

इसी तरह का प्रश्न जो आपके लिए सहायक हो सकता है: http://stackoverflow.com/questions/1998735/dynamic-object-literal-in-javascript – DaiYoukai

उत्तर

29

संपादित करें: उपयोग var obj = {}; obj[key] = chunks[i];

क्योंकि ECMAScript इस {key:1} के रूप में शाब्दिक में key व्यवहार करता है।

+0

हां केवल प्रश्न में एक टाइपो बना दिया। होना चाहिए 'var पैरामीटर = []; '। प्रश्न/समस्या अभी भी खड़ी है। – cube

+0

धन्यवाद, यह अब काम करता है। – cube

0

लुकअप के लिए भी इस्तेमाल किया जा सकता है: obj [key]। remmeber करें obj.key वस्तु

var obj = { 
    test:1 
} 


var key = 'test' 
obj.test = obj[key] = 1 

यहाँ में कुंजी खोजें obj.key

4

ES2015 काम नहीं करेगा होगा (via Babel) गतिशील कुंजी समर्थन करता है:

const Parameters=[]; 
const len = chunks.length; 
for (let i = 0; i < len; i++) { 
    const key = `key_${i}`; 
    obj = { [key] : chunks[i]}; 
    Parameters.push(obj); 
} 

(आसपास कोष्ठक ध्यान दें कुंजी)

या बेहतर अभी तक:

const Parameters = chunks.map((c, i) => ({ [`key_${i}`]: c })); 
संबंधित मुद्दे