কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে দুটি অবজেক্টের প্রপার্টি ডাইনামিক্যালি মার্জ করা

দুটি বা অধিক অবজেক্টের প্রপার্টি একসাথে মিলিয়ে একটি নতুন অবজেক্ট বানাতে 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) বা রিকার্সিভ ফাংশন লাগবে
  1. জাভাস্ক্রিপ্টে অবজেক্ট প্রপার্টি অ্যাক্সেস করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে দুটি অবজেক্ট মার্জ করা

  3. জাভাস্ক্রিপ্টে অবজেক্ট 머জ করে সিঙ্গেল অবজেক্ট অ্যারে তৈরি করা

  4. পাইথনে দুটি ডিকশনারি মার্জ (Merge) করা