Lodash এর _.assign(), _.merge(), এবং _.omit() ফাংশনগুলো অবজেক্ট ম্যানিপুলেশনের জন্য খুবই জনপ্রিয় এবং শক্তিশালী ফাংশন। এগুলি অবজেক্টের ডেটা পরিচালনা, মার্জ (combine), কপি, এবং নির্দিষ্ট প্রোপার্টি সরানো সহজ করে তোলে। এখানে এই ফাংশনগুলির ব্যবহার ব্যাখ্যা করা হলো।
১. _.assign() এর ব্যবহার
_.assign() ফাংশনটি একটি বা একাধিক অবজেক্টের প্রোপার্টি অন্য একটি অবজেক্টে কপি করে। এটি শ্যালো কপি (shallow copy) তৈরি করে, অর্থাৎ যে অবজেক্টগুলোর ভ্যালু আরেকটি অবজেক্ট বা অ্যারে, সেগুলোর কপি হবে না, বরং তাদের রেফারেন্স কপি হবে।
সাধারণ সিনট্যাক্স:
_.assign(object, ...sources);
- object: মূল অবজেক্ট, যেটিতে অন্যান্য অবজেক্টের প্রোপার্টি কপি হবে।
- sources: এক বা একাধিক অবজেক্ট যেগুলোর প্রোপার্টি মূল অবজেক্টে কপি হবে।
উদাহরণ:
const _ = require('lodash');
let obj1 = { a: 1, b: 2 };
let obj2 = { b: 3, c: 4 };
let result = _.assign({}, obj1, obj2);
console.log(result); // { a: 1, b: 3, c: 4 }
ব্যাখ্যা: এখানে obj2 এর b প্রোপার্টি obj1 এর b প্রোপার্টি উপরে অদলবদল করে কপি হয়েছে। _.assign() মূলত শেষের অবজেক্টের প্রোপার্টি প্রথমের অবজেক্টে ওভাররাইট (overwrite) করে।
২. _.merge() এর ব্যবহার
_.merge() ফাংশনটি দুটি বা তার বেশি অবজেক্টকে মার্জ করে, তবে এটি গভীর কপি (deep copy) তৈরি করে। অর্থাৎ, যদি অবজেক্টগুলির কোনো ভ্যালু আরেকটি অবজেক্ট বা অ্যারে হয়, তাহলে সেই ভ্যালুগুলোও কপি হবে, শুধুমাত্র রেফারেন্স নয়।
সাধারণ সিনট্যাক্স:
_.merge(object, ...sources);
- object: মূল অবজেক্ট, যেটিতে অন্যান্য অবজেক্টের প্রোপার্টি মার্জ হবে।
- sources: এক বা একাধিক অবজেক্ট যেগুলোর প্রোপার্টি মূল অবজেক্টে মার্জ হবে।
উদাহরণ:
const _ = require('lodash');
let obj1 = { a: 1, b: { x: 10, y: 20 } };
let obj2 = { b: { y: 30, z: 40 }, c: 3 };
let result = _.merge({}, obj1, obj2);
console.log(result); // { a: 1, b: { x: 10, y: 30, z: 40 }, c: 3 }
ব্যাখ্যা: _.merge() ভ্যালুগুলোকে গভীরভাবে মার্জ করে, অর্থাৎ b অবজেক্টের ভ্যালু যেমন { x: 10, y: 30, z: 40 } তৈরি করেছে। এটি b এর ভ্যালু কপি করতে গিয়ে পুরানো ভ্যালু (যেমন y: 20) এবং নতুন ভ্যালু (যেমন y: 30) একত্রিত করেছে।
৩. _.omit() এর ব্যবহার
_.omit() ফাংশনটি একটি অবজেক্ট থেকে নির্দিষ্ট প্রোপার্টি বা কী বাদ (omit) দেয় এবং নতুন একটি অবজেক্ট রিটার্ন করে। এটি মূল অবজেক্টটি পরিবর্তন করে না।
সাধারণ সিনট্যাক্স:
_.omit(object, paths);
- object: মূল অবজেক্ট, থেকে যেগুলোর প্রোপার্টি বাদ দেওয়া হবে।
- paths: যেসব প্রোপার্টি বাদ দিতে চান তাদের নামের একটি অ্যারে।
উদাহরণ:
const _ = require('lodash');
let person = { name: 'John', age: 30, city: 'New York' };
let result = _.omit(person, ['age']);
console.log(result); // { name: 'John', city: 'New York' }
ব্যাখ্যা: এখানে _.omit() ফাংশনটি age প্রোপার্টি বাদ দিয়ে নতুন একটি অবজেক্ট তৈরি করেছে। মূল অবজেক্টে কোনো পরিবর্তন হয়নি।
_.assign(), _.merge(), এবং _.omit() এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | _.assign() | _.merge() | _.omit() |
|---|---|---|---|
| কপি ধরনের ধরন | শ্যালো কপি (shallow copy) | গভীর কপি (deep copy) | নতুন অবজেক্ট তৈরি, কিছু প্রোপার্টি বাদ দিয়ে |
| প্রোপার্টি মার্জ | সরাসরি মান কপি করে এবং শেষের মান ওভাররাইট করে | অবজেক্টের গভীর স্তরের প্রোপার্টি মার্জ করে | প্রোপার্টি বাদ দেওয়ার জন্য ব্যবহৃত হয় |
| প্যারামিটার | একটি অবজেক্ট এবং একাধিক সোর্স অবজেক্ট | একটি অবজেক্ট এবং একাধিক সোর্স অবজেক্ট | একটি অবজেক্ট এবং যে প্রোপার্টি বাদ দিতে হবে তার নাম |
| মুল অবজেক্টে পরিবর্তন হয় কি? | হ্যাঁ, মূল অবজেক্ট পরিবর্তিত হয় | হ্যাঁ, মূল অবজেক্ট পরিবর্তিত হয় | না, মূল অবজেক্ট অপরিবর্তিত থাকে |
উপসংহার
_.assign(): এটি শ্যালো কপি করে এবং শুধুমাত্র সরাসরি প্রোপার্টি কপি করে, তবে গভীর অবজেক্টগুলোর কপি করা হয় না।_.merge(): এটি গভীর কপি করে এবং অবজেক্টের ভিতরের ভ্যালুগুলোও মার্জ করে।_.omit(): এটি একটি নতুন অবজেক্ট তৈরি করে, যেখানে কিছু নির্দিষ্ট প্রোপার্টি বাদ দেওয়া হয়।
এই তিনটি ফাংশন Lodash এর শক্তিশালী টুল, যা JavaScript অবজেক্ট ম্যানিপুলেশনকে আরও সহজ এবং কার্যকরী করে তোলে।
Read more