দুটি বা অধিক অবজেক্টের প্রপার্টি একসাথে মিলিয়ে একটি নতুন অবজেক্ট বানাতে ES6 স্প্রেড অপারেটর (...) ব্যবহার করা সবচেয়ে সহজ এবং আধুনিক পদ্ধতি।
উদাহরণ কোড
var firstObject = {
firstName: 'John',
lastName: 'Smith'
};
var secondObject = {
countryName: 'US'
};
var mergeObject = {...firstObject, ...secondObject};
console.log(mergeObject);
চলানো পদ্ধতি
প্রোগ্রামটি রান করতে নিচের কমান্ড ব্যবহার করুন:
node fileName.js
এখানে ফাইল নাম demo307.js।
আউটপুট
PS C:\Users\Amit\javascript-code> node demo307.js
{ firstName: 'John', lastName: 'Smith', countryName: 'US' }
ব্যাখ্যা
{...firstObject, ...secondObject}- স্প্রেড অপারেটর দিয়ে দুটি অবজেক্টের প্রপার্টি কপি করে নতুন অবজেক্ট তৈরি করা হয়েছে।- যদি একই নামের প্রপার্টি থাকে, তবে পরবর্তী অবজেক্টের মান আগেরটিকে ওভাররাইড করে।
- মূল অবজেক্টগুলো অপরিবর্তিত থাকে (immutable pattern)।
অন্যান্য পদ্ধতি
Object.assign() (ES5+)
var mergeObject = Object.assign({}, firstObject, secondObject);
// {} = টার্গেট অবজেক্ট (নতুন অবজেক্ট), বাকিগুলো সোর্স
একাধিক অবজেক্ট মার্জ
const obj1 = { a: 1 };
const obj2 = { b: 2 };
const obj3 = { c: 3 };
const merged = { ...obj1, ...obj2, ...obj3 }; // { a: 1, b: 2, c: 3 }
ডিপ মার্জ (নেস্টেড অবজেক্টের জন্য) - Lodash বা কাস্টম ফাংশন দরকার
// শ্যালো মার্জ নেস্টেড অবজেক্টের জন্য কাজ করে না
const a = { user: { name: 'John', age: 30 } };
const b = { user: { age: 31, city: 'NY' } };
const shallow = { ...a, ...b };
// { user: { age: 31, city: 'NY' } } - name গেছে!
// ডিপ মার্জের জন্য লাইব্রেরি (Lodash) বা রিকার্সিভ ফাংশন লাগবে