क्या जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक में चर कुंजी का उपयोग करने का एक तरीका है?


82

मेरे पास इस तरह का कोड है।

var key = "anything";   
var object = {   
    key: "key attribute"  
};

मैं जानना चाहता हूं कि क्या key"कुछ भी" के साथ इसे बदलने का कोई तरीका है ।

पसंद

var object = {  
    "anything": "key attribute"     
};

जवाबों:


197

ईएस 6 में, गणना की गई संपत्ति के नाम का उपयोग करें ।

const key = "anything";   

const object = {   
    [key]: "key attribute"
//  ^^^^^  COMPUTED PROPERTY NAME
};

चारों ओर चौकोर कोष्ठक पर ध्यान दें key। आप वास्तव में स्क्वायर ब्रैकेट में किसी भी अभिव्यक्ति को निर्दिष्ट कर सकते हैं, न कि केवल एक चर।


5
क्रोम पर भी काम करता है। सबसे सरल और सबसे अच्छा जवाब (y)
— अनाम शेरज़

1
यह ES6 के लिए ठीक है, लेकिन पुराने संस्करणों के बारे में क्या है (IE11 ऊपर दिए गए कोड पर दुर्घटनाग्रस्त हो जाएगा)
— pascalzon

117

हाँ। आप उपयोग कर सकते हैं:

var key = "anything";
var json = { };
json[key] = "key attribute";

या यदि प्रोग्राम लिखते समय आपके पास मान हो तो बस अपनी दूसरी विधि का उपयोग करें।


15

आधुनिक जावास्क्रिप्ट (ECMAScript 6) पर आप वर्ग कोष्ठक के साथ चर को घेर सकते हैं:

var key = "anything";

var json = {
    [key]: "key attribute"
};

12

यह काम कर जाना चाहिए:

var key = "anything";

var json = {};

json[key] = "key attribute";

लेकिन वह एक वस्तु शाब्दिक के संदर्भ में ऐसा करना चाहता है।


-2

क्लोजर इसके लिए बहुत अच्छा काम करते हैं।

function keyValue(key){
  return function(value){
    var object = {};
    object[key] = value;
    return object;
  }
}

var key = keyValue(key);
key(value);

क्लोजर केवल यहां उपयोग किया जाने वाला तंत्र है। अवधारणा HOF है।

1
HOF = उच्च आदेश कार्य।
— रिक

-2

हाल ही में एक समाधान की जरूरत है कि गतिशील जोंस प्रमुख मूल्यों को पारित करने वाले कुकीज़ कैसे सेट करें Https://github.com/js-cookie/js-cookie#json का उपयोग करके इसे आसानी से किया जा सकता है। कुकी में उपयोगकर्ता के प्रत्येक चयनित विकल्प मूल्य को संग्रहीत करना चाहता था, इसलिए यह टैब या ब्राउज़र बंद होने की स्थिति में खो नहीं जाता है।

var json = { 
        option_values : {}
    };
    $('option:selected').each(function(index, el) {
        var option = $(this);
        var optionText = option.text();
        var key = 'option_' + index;
        json.option_values[key] = optionText;
        Cookies.set('option_values', json, { expires: 7 } );
    }); 

तब आप प्रत्येक पेज लोड पर प्रत्येक कुकी कुंजी का उपयोग करके पुनः प्राप्त कर सकते हैं

Cookies.getJSON('option_values');

-3

वैसे, ऐसा करने का "सीधा" तरीका नहीं है ...

लेकिन यह करना चाहिए:

json[key] = json.key;
json.key = undefined;

यह थोड़ा मुश्किल है, लेकिन हे, यह काम करता है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.