_.clone() কি?
_.clone() একটি Underscore.js ফাংশন যা একটি অবজেক্ট বা অ্যারের শ্যালো কপি (shallow copy) তৈরি করে। এটি মূল অবজেক্টের সকল প্রপার্টি এবং মান কপি করে, তবে নেস্টেড অবজেক্টগুলি কপি করা হয় না, অর্থাৎ কেবলমাত্র প্রথম স্তরের ডেটা কপি হয়।
উদাহরণ:
const person = {
name: 'John',
age: 30,
address: { city: 'New York', state: 'NY' }
};
const clonedPerson = _.clone(person);
console.log(clonedPerson);
// { name: 'John', age: 30, address: { city: 'New York', state: 'NY' } }
এখানে, _.clone() ফাংশনটি person অবজেক্টের একটি শ্যালো কপি তৈরি করেছে। তবে, যদি আপনি clonedPerson.address এ পরিবর্তন করেন, এটি মূল person.address এর মানও পরিবর্তন করবে, কারণ address একটি নেস্টেড অবজেক্ট এবং এটি কপি হয়নি, বরং রেফারেন্স কপি করা হয়েছে।
শ্যালো কপি সমস্যার সমাধান:
যদি আপনি গভীর কপি (deep copy) করতে চান, যেখানে নেস্টেড অবজেক্টগুলিও কপি হবে, তাহলে _.cloneDeep() ব্যবহার করতে হবে।
_.isEqual() কি?
_.isEqual() ফাংশনটি দুটি অবজেক্ট বা মান তুলনা করে এবং দেখবে তারা সমান কিনা। এটি গভীরভাবে অবজেক্ট এবং অ্যারের তুলনা করে, অর্থাৎ, নেস্টেড অবজেক্টও তুলনা করা হয়।
উদাহরণ:
const person1 = {
name: 'John',
age: 30,
address: { city: 'New York', state: 'NY' }
};
const person2 = {
name: 'John',
age: 30,
address: { city: 'New York', state: 'NY' }
};
const isEqual = _.isEqual(person1, person2);
console.log(isEqual); // true
এখানে, _.isEqual() দুটি অবজেক্ট person1 এবং person2 গঠন এবং মানের দিকে গভীরভাবে তুলনা করছে এবং যেহেতু তাদের মধ্যে কোনো পার্থক্য নেই, এটি true রিটার্ন করবে।
নোট:
_.isEqual() গভীরভাবে অবজেক্টের প্রতিটি প্রপার্টি এবং তাদের মান পরীক্ষা করে, তাই এটি নেস্টেড অবজেক্ট বা অ্যারে থেকেও পার্থক্য শনাক্ত করতে পারে।
_.clone() এবং _.isEqual() এর মাধ্যমে অবজেক্ট ক্লোন এবং তুলনা
_.clone() এবং _.isEqual() ব্যবহারের মাধ্যমে আপনি সহজেই অবজেক্টের ক্লোন তৈরি করতে পারেন এবং তারপর তাদের মধ্যে তুলনা করতে পারেন। এটি বিশেষ করে যখন আপনি জানেন না যদি অবজেক্টটি পরিবর্তিত হতে পারে এবং আপনি আগের মান বজায় রাখতে চান।
উদাহরণ: অবজেক্ট ক্লোন এবং তুলনা
const original = {
name: 'Alice',
age: 25,
address: { city: 'Los Angeles', state: 'CA' }
};
// ক্লোন করা হচ্ছে
const cloned = _.clone(original);
// ক্লোনের সাথে মূল অবজেক্ট তুলনা করা হচ্ছে
const isSame = _.isEqual(original, cloned);
console.log(isSame); // true
// অবজেক্ট পরিবর্তন করা হচ্ছে
cloned.age = 26;
const isSameAfterChange = _.isEqual(original, cloned);
console.log(isSameAfterChange); // false
এখানে, প্রথমে _.clone() ব্যবহার করে মূল original অবজেক্টের একটি শ্যালো কপি তৈরি করা হয়েছে এবং তারপর _.isEqual() ব্যবহার করে তাদের মধ্যে তুলনা করা হয়েছে। এরপর, cloned অবজেক্টে কিছু পরিবর্তন আনার পর, _.isEqual() ফেরত দিয়েছে false, কারণ এখন তারা আর সমান নয়।
সারাংশ
_.clone(): এটি একটি অবজেক্ট বা অ্যারের শ্যালো কপি তৈরি করে, যেখানে শুধুমাত্র প্রথম স্তরের মান কপি হয় এবং নেস্টেড অবজেক্টের রেফারেন্স কপি হয়।_.isEqual(): এটি দুটি অবজেক্ট বা মানের মধ্যে পার্থক্য খুঁজে গভীরভাবে তুলনা করে, এমনকি নেস্টেড অবজেক্টও।
এই দুটি ফাংশন ওয়েব ডেভেলপমেন্টে অনেক কার্যকরী, বিশেষ করে যখন আপনি ডেটার কপি তৈরি করতে চান এবং পরবর্তীতে তাদের মধ্যে তুলনা করতে চান।
Read more