मुझे गतिशील रूप से JS ऑब्जेक्ट प्रॉपर्टी नाम सेट करने की आवश्यकता है।
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
परिणाम होना चाहिए:
data = {
1name: 'name1'
2name: 'name1'
}
मुझे गतिशील रूप से JS ऑब्जेक्ट प्रॉपर्टी नाम सेट करने की आवश्यकता है।
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
परिणाम होना चाहिए:
data = {
1name: 'name1'
2name: 'name1'
}
जवाबों:
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
आपको []कुंजी को गतिशील रूप से सेट करने के लिए नोटेशन का उपयोग करना होगा ।
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
अब ES6 में आप ऑब्जेक्ट कील सिंटैक्स का उपयोग गतिशील रूप से ऑब्जेक्ट कुंजी बनाने के लिए कर सकते हैं, बस चर को अंदर लपेटें []
var key = i + 'name';
data = {
[key] : 'name1',
}
ECMAScript 6 के साथ, आप वस्तु शाब्दिक सिंटैक्स के साथ चर संपत्ति के नाम का उपयोग कर सकते हैं, जैसे:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
यह सिंटैक्स निम्नलिखित नए ब्राउज़रों में उपलब्ध है:
एज 12+ (नो आईई सपोर्ट), एफएफ 34+, क्रोम 44+, ओपेरा 31+, सफारी 7.1+
( https://kangax.github.io/compat-table/es6/ )
आप एक का उपयोग करके पुराने ब्राउज़र के लिए समर्थन जोड़ सकते हैं transpiler जैसे कोलाहल । यदि आप के रूप में ऐसी बंडलर एक मॉड्यूल का उपयोग कर रहे एक पूरी परियोजना transpile करने के लिए आसान है रोलअप या webpack ।
ऑब्जेक्ट कुंजी के रूप में एक चर का उपयोग करें
let key = 'myKey';
let data = {[key] : 'name1'; }
इससे कोई फर्क नहीं पड़ता कि चर कहाँ से आता है। मुख्य बात हम एक है ... वर्ग कोष्ठक "[..]" के बीच चर नाम सेट करें।
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
ऊपर साईनाथ एसआर की टिप्पणी की तर्ज पर, मैं Google ऐप्स स्क्रिप्ट (जो अभी तक ES6 का समर्थन नहीं करता है) में एक चर से js ऑब्जेक्ट प्रॉपर्टी का नाम सेट करने में सक्षम था, फिर ऑब्जेक्ट को परिभाषित करते हुए ऑब्जेक्ट के बाहर किसी अन्य कुंजी / मान को परिभाषित करते हुए:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;