दिलचस्प पोस्ट
सी # ऑब्जेक्ट डम्पर संख्या स्ट्रिंग में अल्पविराम सम्मिलित करें सी ++ में एक खाली फ़ाइल की जांच \ K में regex का समर्थन jQuery UI संवाद बॉक्स – बंद होने के बाद नहीं खुलता है अजगर फ़िल्टर के बराबर () दो आउटपुट सूचियों (अर्थात सूची का विभाजन) हो रहा है एक्लिप्स में सफेद स्थान को पीछे छोड़ने के लिए कैसे करें? हैश स्ट्रिंग 'android-22' के साथ लक्ष्य खोजने में विफल कैसे एक ऑटो वृद्धि संस्करण संख्या (दृश्य स्टूडियो) है? एचटीएमएल प्रिंट करते समय पेज पर प्रिंट करें पायथन में ऑडियो रिकॉर्ड और रिकॉर्ड करें $ .each () बनाम () लूप – और प्रदर्शन के लिए Asp.net mvc में अग्नि और async विधि भूल जाओ UIButton छवि + पाठ IOS हम पीपीसी / पीपीसी 64 और साथ ही 10.4 / 10.5 एसडीके समर्थन को Xcode 4 को कैसे बहाल कर सकते हैं?

जावास्क्रिप्ट ऑब्जेक्ट में मैं एक कुंजी / वैल्यू पेयर कैसे जोड़ सकता हूं?

यहां मेरा ऑब्जेक्ट शाब्दिक है:

var obj = {key1: value1, key2: value2}; 

मैं वस्तु में {key3: value3} कैसे जोड़ सकता हूं?

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट ऑब्जेक्ट में मैं एक कुंजी / वैल्यू पेयर कैसे जोड़ सकता हूं?"

एक वस्तु में नए गुण जोड़ने के दो तरीके हैं:

 var obj = { key1: value1, key2: value2 }; 

डॉट नोटेशन का उपयोग करना:

 obj.key3 = "value3"; 

स्क्वायर ब्रैकेट नोटेशन का उपयोग करना:

 obj["key3"] = "value3"; 

पहला फार्म तब इस्तेमाल किया जाता है जब आप संपत्ति के नाम को जानते हैं दूसरे फॉर्म का उपयोग तब किया जाता है जब संपत्ति का नाम गतिशील रूप से निर्धारित होता है। इस उदाहरण की तरह:

 var getProperty = function (propertyName) { return obj[propertyName]; }; getProperty("key1"); getProperty("key2"); getProperty("key3"); 

एक असली जावास्क्रिप्ट अरैय का उपयोग करके या तो बनाया जा सकता है:

एरे शाब्दिक संकेतन:

 var arr = []; 

सरणी निर्माता का संकेतन:

 var arr = new Array(); 

आप इनमें से किसी एक का उपयोग कर सकते हैं (प्रदान की गई कुंजी 3 ही एट्यूटल कुंजी है जिसे आप उपयोग करना चाहते हैं)

 arr[ 'key3' ] = value3; 

या

 arr.key3 = value3; 

यदि key3 एक चर है, तो आपको करना चाहिए:

 var key3 = 'a_key'; var value3 = 3; arr[ key3 ] = value3; 

इसके बाद, arr.a_key अनुरोध करने वाले मूल्य 3 का मान, एक शाब्दिक 3

बड़ी परियोजनाओं को लिखते समय मुझे लोदाश / अंडरस्कोर के शौकीन हो गए हैं

obj.key obj['key'] या obj.key द्वारा जोड़ना सभी ठोस शुद्ध जावास्क्रिप्ट उत्तर हैं हालांकि सामान्यतः ऑब्जेक्ट और एरेज़ के साथ काम करते समय लोडाश और अंडरस्कोर लाइब्रेरी दोनों बहुत से अतिरिक्त सुविधाजनक कार्य प्रदान करते हैं।

.push() लिए है , ऑब्जेक्ट के लिए नहीं।

आप जो तलाश कर रहे हैं उसके आधार पर, दो विशिष्ट फ़ंक्शन हैं जो उपयोग करने के लिए अच्छा हो सकते हैं और arr.push() का अनुभव के समान कार्यक्षमता दे सकते हैं। अधिक जानकारी के लिए दस्तावेज़ों की जांच करें, उनमें कुछ महान उदाहरण हैं

_.जेरगे (केवल लोदाश)

दूसरा ऑब्जेक्ट अधिलेखित या बेस ऑब्जेक्ट में जोड़ देगा। undefined मान कॉपी नहीं किए गए हैं।

 var obj = {key1: "value1", key2: "value2"}; var obj2 = {key2:"value4", key3: "value3", key4: undefined}; _.merge(obj, obj2); console.log(obj); // → {key1: "value1", key2: "value4", key3: "value3"} 

_.extend / _.assign

दूसरा ऑब्जेक्ट अधिलेखित या बेस ऑब्जेक्ट में जोड़ देगा। undefined की नकल की जाएगी

 var obj = {key1: "value1", key2: "value2"}; var obj2 = {key2:"value4", key3: "value3", key4: undefined}; _.extend(obj, obj2); console.log(obj); // → {key1: "value1", key2: "value4", key3: "value3", key4: undefined} 

_.defaults

दूसरे ऑब्जेक्ट में चूक होता है जो मूल ऑब्जेक्ट में जोड़ा जाएगा यदि वे मौजूद नहीं हैं। यदि कुंजी पहले ही मौजूद है तो undefined मान की प्रतिलिपि बनाई जाएगी

 var obj = {key3: "value3", key5: "value5"}; var obj2 = {key1: "value1", key2:"value2", key3: "valueDefault", key4: "valueDefault", key5: undefined}; _.defaults(obj, obj2); console.log(obj); // → {key3: "value3", key5: "value5", key1: "value1", key2: "value2", key4: "valueDefault"} 

$ .extend

इसके अलावा, यह jQuery.extend उल्लेखनीय हो सकता है, यह _.merge के समान कार्य करता है और यदि आप पहले से ही jQuery का उपयोग कर रहे हैं तो एक बेहतर विकल्प हो सकता है।

दूसरा ऑब्जेक्ट अधिलेखित या बेस ऑब्जेक्ट में जोड़ देगा। undefined मान कॉपी नहीं किए गए हैं।

 var obj = {key1: "value1", key2: "value2"}; var obj2 = {key2:"value4", key3: "value3", key4: undefined}; $.extend(obj, obj2); console.log(obj); // → {key1: "value1", key2: "value4", key3: "value3"} 

Object.assign ()

यह ES6 / ES2015 ऑब्जेक्ट का उल्लेख करने के योग्य हो सकता है। हस्ताक्षर, यह _.merge के समान कार्य करता है और अगर आप पहले से ही ES6 / ES2015 पॉलीफिल जैसे बैबल की तरह उपयोग कर रहे हैं, यदि आप खुद को पॉलीफ़िल करना चाहते हैं

दूसरा ऑब्जेक्ट अधिलेखित या बेस ऑब्जेक्ट में जोड़ देगा। undefined की नकल की जाएगी

 var obj = {key1: "value1", key2: "value2"}; var obj2 = {key2:"value4", key3: "value3", key4: undefined}; Object.assign(obj, obj2); console.log(obj); // → {key1: "value1", key2: "value4", key3: "value3", key4: undefined} 
 arr.key3 = value3; 

क्योंकि आपके arr वास्तव में एक सरणी नहीं है … यह एक प्रोटोटाइप ऑब्जेक्ट है असली सरणी यह ​​होगी:

 var arr = [{key1: value1}, {key2: value2}]; 

लेकिन यह अभी भी सही नहीं है। यह वास्तव में होना चाहिए:

 var arr = [{key: key1, value: value1}, {key: key2, value: value2}]; 
 var employees = []; employees.push({id:100,name:'Yashwant',age:30}); employees.push({id:200,name:'Mahesh',age:35}); 

मुझे पता है कि इसके लिए एक स्वीकृत उत्तर पहले से ही है, लेकिन मैंने सोचा कि मैं कहीं मेरा विचार दस्तावेज करूँगा। कृपया [लोग] इस विचार में छेद को छेड़ने के लिए स्वतंत्र महसूस कर रहे हैं, क्योंकि मुझे यकीन नहीं है कि यह सबसे अच्छा समाधान है … लेकिन मैं इसे कुछ मिनट पहले ही रख दिया था:

 Object.prototype.push = function( key, value ){ this[ key ] = value; return this; } 

आप इसे इस तरह से उपयोग करेंगे:

 var obj = {key1: value1, key2: value2}; obj.push( "key3", "value3" ); 

चूंकि, प्रोटोटाइप फ़ंक्शन यह लौटा रहा है this आप चेन को जारी रख सकते हैं। अपने obj.push(...).push(...).push(...); चर के अंत में obj.push(...).push(...).push(...);

एक अन्य विशेषता यह है कि पुश फ़ंक्शन तर्कों में मान के रूप में आप एक सरणी या अन्य वस्तु को पारित कर सकते हैं। काम के उदाहरण के लिए मेरा बेला देखें: http://jsfiddle.net/7tEme/

आप @ आईओएनटी जी। स्टेन के उत्तर के साथ एक वर्ग बना सकते हैं

 function obj(){ obj=new Object(); this.add=function(key,value){ obj[""+key+""]=value; } this.obj=obj } 

अंतिम श्रेणी के साथ एक नई ऑब्जेक्ट बनाना:

 my_obj=new obj(); my_obj.add('key1', 'value1'); my_obj.add('key2', 'value2'); my_obj.add('key3','value3'); 

ऑब्जेक्ट प्रिंटिंग

 console.log(my_obj.obj) // Return {key1: "value1", key2: "value2", key3: "value3"} 

एक कुंजी छपाई

 console.log(my_obj.obj["key3"]) //Return value3 

मैं जावास्क्रिप्ट में नौसिखिया हूँ, टिप्पणियां स्वागत है मेरे लिये कार्य करता है।

अधिकतर उत्तरों में पहले से ही उल्लेख किए गए दो सबसे अधिक उपयोग किए गए तरीकों

 obj.key3 = "value3"; obj["key3"] = "value3"; 

किसी संपत्ति को परिभाषित करने का एक और तरीका ऑब्जेक्ट का उपयोग कर रहा है। डेफ़िनप्रॉपर्टी ()

 Object.defineProperty(obj, 'key3', { value: "value3", // undefined by default enumerable: true, // false by default configurable: true, // false by default writable: true // false by default }); 

यह विधि उपयोगी है, जब आप संपत्ति को परिभाषित करते समय अधिक नियंत्रण रखना चाहते हैं। परिभाषित संपत्ति उपयोगकर्ता द्वारा अभेद्य, विन्यास और लिखने योग्य के रूप में सेट की जा सकती है।

आपका उदाहरण एक ऑरेजेन्ट दिखाता है, अर्रे नहीं। उस स्थिति में, किसी ऑब्जेक्ट में एक फ़ील्ड जोड़ने का पसंदीदा तरीका यह तय करना है कि ऐसा करने के लिए:

 arr.key3 = value3; 

यदि आपके पास एक ऑब्जेक्ट के अंदर एकाधिक अनाम ऑब्जेक्ट शाब्दिक हैं और कुंजी / मान युग्म वाले दूसरे ऑब्जेक्ट को जोड़ना चाहते हैं, तो ऐसा करें:

फायरबग 'ऑब्जेक्ट:

 console.log(Comicbook); 

रिटर्न:

वस्तु {नाम = "स्पाइडरमैन", मूल्य = "11"}, ऑब्जेक्ट {name = "Marsipulami", value = "18"}, ऑब्जेक्ट {name = "Garfield", value = "2"}]

कोड:

 if (typeof Comicbook[3]=='undefined') { private_formArray[3] = new Object(); private_formArray[3]["name"] = "Peanuts"; private_formArray[3]["value"] = "12"; } 

कॉमिक बुक ऑब्जेक्ट में Object {name="Peanuts", value="12"} जोड़ देगा

या तो obj['key3'] = value3 obj.key3 = value3 या obj.key3 = value3 नई जोड़ी obj को जोड़ देगा

हालांकि, मुझे पता है कि jQuery का उल्लेख नहीं किया गया था, लेकिन अगर आप इसका उपयोग कर रहे हैं, तो आप ऑब्जेक्ट को $.extend(obj,{key3: 'value3'}) माध्यम से जोड़ सकते हैं। $.extend(obj,{key3: 'value3'}) । उदाहरण के लिए:

 var obj = {key1: 'value1', key2: 'value2'}; $('#ini').append(JSON.stringify(obj)); $.extend(obj,{key3: 'value3'}); $('#ext').append(JSON.stringify(obj)); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <p id="ini">Initial: </p> <p id="ext">Extended: </p> 

आप या तो इसे इस तरह जोड़ सकते हैं:

 arr['key3'] = value3; 

या इस तरह से:

 arr.key3 = value3; 

वेरिएबल की key3 साथ ऑब्जेक्ट में कुंजीयन का सुझाव देने वाले उत्तर केवल तभी काम करेंगे यदि key3 का मान 'key3' था

ईसीएमए -262 ( http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf , P67) में परिभाषित संपत्ति एक्सेसर्स के मुताबिक, आप दो तरह से गुण जोड़ सकते हैं एक वस्तु मौजूद है ये सभी दो तरह से, जावास्क्रिप्ट इंजन उन्हें उसी प्रकार से व्यवहार करेगा

डॉट नोटेशन का उपयोग करने का पहला तरीका है:

 obj.key3 = value3; 

लेकिन इस तरह, आपको डॉट नेशन के बाद पहचानकर्ता नाम का उपयोग करना चाहिए।

ब्रैकेट नोटेशन का दूसरा तरीका है:

 obj["key3"] = value3; 

और दूसरा रूप:

 var key3 = "key3"; obj[key3] = value3; 

इस तरह, आप ब्रैकेट नोटेशन में अभिव्यक्ति ( पहचानकर्ता नाम शामिल) का उपयोग कर सकते हैं।

वर्ष 2017 का जवाब

ऑब्जेक्ट। सौदा (dest, src1, src2, …) ऑब्जेक्ट मर्ज करता है

यह (और कई) स्रोत वस्तुओं के गुणों और मूल्यों के साथ dest को नष्ट कर देता है, फिर वह वापस लौटाता है

Object.assign()Object.assign() विधि का उपयोग एक या अधिक स्रोत ऑब्जेक्ट्स से एक लक्ष्य ऑब्जेक्ट के लिए सभी गणनायोग्य स्वयं गुणों के मूल्यों की प्रतिलिपि बनाने के लिए किया जाता है। यह लक्ष्य वस्तु वापस करेगा।

लाइव उदाहरण

 var obj = {key1: "value1", key2: "value2"}; Object.assign(obj, {key3: "value3"}); document.body.innerHTML = JSON.stringify(obj); 

हम यह भी इस तरह से कर सकते हैं

 var myMap = new Map(); myMap.set(0, 'my value1'); myMap.set(1, 'my value2'); for (var [key, value] of myMap) { console.log(key + ' = ' + value); } 

ऑब्जेक्ट के लिए एक कुंजी-वैल्यू जोड़ी को भरने के लिए, ताकि उस तत्व के साथ काम करने में पहले ऐसा करें:

  var nwrow = {'newkey': 'value' }; for(var column in row){ nwrow[column] = row[column]; } row = nwrow; 

इसे प्राप्त करने का सर्वोत्तम तरीका नीचे बताया गया है:

 function getKey(key) { return `${key}`; } var obj = {key1: "value1", key2: "value2", [getKey('key3')]: "value3"}; //console.log(obj); 

अगले जावास्क्रिप्ट विनिर्देश (उम्मीदवार चरण 3) में एक संक्षिप्त और सुरुचिपूर्ण तरीका है:

obj = { ... obj, ... _ = { key3 : value3 } }

ऑब्जेक्ट स्प्रेड बनाम ऑब्जेक्ट । सस्ता में और डॉ। एक्सेल रौशमेयर साइट पर गहरा चर्चा हो सकती है।

यह रिलीज 8.6.0 के बाद से node.js में पहले से ही काम करता है।

अद्यतित रिलीज में विवाल्डी, क्रोम, ओपेरा, और फ़ायरफ़ॉक्स यह सुविधा भी जानते हैं, लेकिन मिरोस्फ़ॉफ़्ट आज तक नहीं, न तो इंटरनेट एक्सप्लोरर या एज में भी।

 arr.push({key3: value3});