2012-03-23 16 views
8

को देखते हुए में जावास्क्रिप्ट ऑब्जेक्ट जोड़ेंएक और जावास्क्रिप्ट वस्तु

options = { 
underscored: true 
} 

products = { 
foo: bar 
} 

मैं

products = { 
underscored: true 
foo: bar 
} 

क्या यह संभव है पाने के लिए जावास्क्रिप्ट में एक और वस्तु में एक वस्तु पुश करने के लिए करना चाहते हैं?

+0

http://stackoverflow.com/questions/1334660/combining-javascript-objects-into-one – bkconrad

उत्तर

20
<script> 
function mix(source, target) { 
    for(var key in source) { 
    if (source.hasOwnProperty(key)) { 
     target[key] = source[key]; 
    } 
    } 

} 

    mix(options, products); 
</script> 

अद्यतन के बाद 4 साल:

अब बेहतर विकल्पों में से एक संख्या हैं, ES6 और ES7 हो रही आम

ES6 के साथ - इस objectToMergeTo

const combinedObject = Object.assign(objectToMergeTo, source1, source2) 

ES7 (उत्परिवर्तित होगा स्प्रेड ऑपरेटर के साथ वाक्यविन्यास सौंदर्य) - हालांकि यह संस्करण एक नया उदाहरण बनाता है, आप स्प्रेड ऑपरेटर के साथ किसी ऑब्जेक्ट में नहीं जोड़ सकते हैं।

'बार' के आसपास
const combined = { ...source1, ...source2 } 
+0

+1! ऑब्जेक्ट गुणों को पुन: सक्रिय करने का यह सही तरीका है। – jwueller

+0

धन्यवाद आप बहुत मदद कर रहे हैं! – lemon

+1

पीटर, कि ईएस 7 सिंटैक्स सिर्फ एक ही ऑब्जेक्ट बनाने के लिए प्रतीत होता है, केवल दो गुणों को पूरी तरह से उनके गुणों के बजाय – TheEnvironmentalist

5

आप ऐसा कर सकता है:

for(var key in options) { 
    products[key] = options[key]; 
} 

कि प्रभावी रूप से दो वस्तुओं 'चर गठबंधन होगा।

+0

यह एक 'hasOwnProperty' जांच याद आ रही है और अप्रत्याशित परिणाम देगा, दो वस्तुओं पर निर्भर करता है। इसके अलावा, यह एक वैश्विक चर 'कुंजी' बनाएगा, जो खराब है। हमेशा 'var' कीवर्ड का प्रयोग करें! – jwueller

+0

वैश्विक चर फिक्स्ड, यह इंगित करने के लिए धन्यवाद। 'HasOwnProperty()' के लिए –

0
var options = { 
    underscored: true 
}; 
var products = { 
    foo: 'bar' 
}; 
products.underscored = options.underscored; 
alert(products.underscored+":"+products.foo); 

को उद्धरणों यह वास्तव में वस्तुओं पर एक मूल्य, अर्द्ध कोलन और वर है बनाने के लिए है, लेकिन आप बात समझ।

संपादित करें: ध्यान देने योग्य भी;

products.options = options; 
alert(products.options.underscored);//alerts true 
0

आप jquery.extend (उत्पादों, विकल्प) का उपयोग कर सकते हैं। jQuery.extend दो ऑब्जेक्ट्स को जोड़ता है, लक्ष्य ऑब्जेक्ट में मिलान तत्व मानों की सवारी करता है और परिणामी ऑब्जेक्ट देता है। अधिक जानकारी के लिए: http://api.jquery.com/jquery.extend/

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