2012-12-12 15 views
119

से जेएस ऑब्जेक्ट प्रॉपर्टी का नाम कैसे सेट करें मुझे जेएस ऑब्जेक्ट प्रॉपर्टी का नाम गतिशील रूप से सेट करने की आवश्यकता है।एक वेरिएबल

for(i=1; i<3; i++) { 
    var key = i+'name'; 

    data = { 
     key : 'name1', 
    } 
} 

परिणाम होना चाहिए:

data = { 
    1name: 'name1' 
    2name: 'name1' 
} 
+0

यदि वे अनुक्रमिक हैं, तो आप ऐरे का उपयोग क्यों नहीं कर रहे हैं? – epascarello

+0

मैं जानना चाहता हूं कि आप में से कौन सा गलत तीर मारा। चलो, फेस अप। – Charles

+0

संभावित डुप्लिकेट [जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक में एक कुंजी के लिए एक चर का उपयोग करना] (http://stackoverflow.com/questions/2274242/using-a-variable-for-a-key-in-a-javascript-object- शाब्दिक) – halfer

उत्तर

130
var jsonVariable = {}; 
for(var i=1; i < 3; i++) { 
    jsonVariable[i + 'name'] = 'name' + i;   
} 
+3

मूसा की प्रतिक्रिया नीचे भी सही ढंग से व्यक्त करती है कि [] नोटेशन का उपयोग करना वास्तव में ऐसा करने का एकमात्र तरीका है। –

+0

यह भी ध्यान दें कि @ चिलनट की प्रतिक्रिया अब ईएस 6 – rambossa

+0

का उपयोग करके ऐसा करने का सबसे आसान तरीका बताती है, वास्तव में, नए सिंटैक्स के साथ जो ओपी हासिल करने की कोशिश कर रहा है, केवल लूप सीमा हार्डकोड और छोटी हो सकती है। – Musa

18

इस तरह गतिशील मूल्य

var jsonVariable = {}; 
for (var i = 1; i < 3; i++) { 
    var jsonKey = i + 'name'; 
    jsonVariable[jsonKey] = 'name' + i; 
} 
85

स्थापित करने के लिए आप [] संकेतन का उपयोग करने के लिए गतिशील रूप से कुंजी सेट करने के लिए होगा।

var jsonVariable = {}; 
for(i=1; i<3; i++) {   
var jsonKey = i+'name'; 
jsonVariable[jsonKey] = 'name1'; 

} 

अब ES6 में आप गतिशील वस्तु कुंजी बनाने के लिए वस्तु शाब्दिक वाक्य विन्यास का उपयोग कर सकते हैं, बस में []

var key = i + 'name'; 
data = { 
    [key] : 'name1', 
} 
+1

jsonVariable = {}; लूप के अंदर शुरू नहीं किया जाना चाहिए। – closure

+0

@raghavv धन्यवाद – Musa

+0

भी आप जेसन वैरिएबल ग्लोबल बना रहे हैं –

-1

जांच यह पता

jsonVariable = {}; 
for(i=1; i<=3; i++) {   
jsonVariable[i]=i+'name'; 
} 
document.writeln(jsonVariable[1]); 
document.writeln(jsonVariable[2]); 
document.writeln(jsonVariable[3]); 

​ 
0
jsonVariable = {} 
for(i=1; i<3; i++) {   
    var jsonKey = i+'name'; 
    jsonVariable[jsonKey] = 'name1' 
} 

इस वसीयत चर लपेट

के समान हो निम्नलिखित नए ब्राउज़रों में

var keyName = 'myKey'; 
var obj = { 
       [keyName]: 1 
      }; 
obj.myKey;//1 

इस वाक्य रचना उपलब्ध है::

58
ECMAScript 6 के साथ

, आप चर संपत्ति के नाम वस्तु शाब्दिक वाक्य रचना के साथ, इस तरह उपयोग कर सकते हैं

एज 12+ (कोई आईई समर्थन), FF34 +, क्रोम 44+, ओपेरा 31+, सफारी 7.1+

(https://kangax.github.io/compat-table/es6/)

आप transpiler जैसे babel का उपयोग कर पुराने ब्राउज़रों को समर्थन जोड़ सकते हैं। यदि आप मॉड्यूल बंडलर जैसे rollup या webpack का उपयोग कर रहे हैं, तो पूरी परियोजना को पार करना आसान है।

+12

यह नया स्वीकार्य उत्तर होना चाहिए ... – lotif

+2

भयानक ES6 वाक्यविन्यास – rambossa

4

इससे कोई फर्क नहीं पड़ता कि चर कहां से आता है। मुख्य बात हमारे पास एक है ... स्क्वायर ब्रैकेट्स के बीच परिवर्तनीय नाम सेट करें "[..]"।

var optionName = 'nameA'; 
var JsonVar = { 
[optionName] : 'some value' 
} 
+0

जोड़ने के लिए धन्यवाद यह अच्छा काम करता है, मुझे आश्चर्य है कि यह सभी ब्राउज़रों/संस्करणों में काम करता है – Mercury

संबंधित मुद्दे