_.isEqual() এর মাধ্যমে Deep Equality Check

Array এবং Object Manipulation এর জন্য Advanced Methods - লোড্যাশ (Lodash) - Web Development

238

Lodash এর _.isEqual() ফাংশনটি দুটি value বা object এর মধ্যে গভীর (deep) সমতা (equality) পরীক্ষা করতে ব্যবহৃত হয়। এটি শুধু shallow (পৃষ্ঠতল) সমতার তুলনা না করে, বরং nested objects বা arrays এর মধ্যে সমস্ত value এবং structure পরীক্ষা করে। অর্থাৎ, দুটি object বা array এর ভিতরের সমস্ত প্রপার্টি বা উপাদানও তুলনা করা হয়, এবং যদি সবকিছু একেবারে সমান হয়, তবে এটি true রিটার্ন করে।


১. _.isEqual() ফাংশন এর ব্যবহার

_.isEqual() ফাংশনটি দুটি value বা object এর মধ্যে deep equality পরীক্ষা করে। এটি nested objects বা arrays এর মধ্যে প্রতিটি স্তরের value গুলি তুলনা করে।

Syntax:

_.isEqual(value, other);
  • value: প্রথম value (object বা array) যেটি পরীক্ষা করতে হবে।
  • other: দ্বিতীয় value (object বা array) যেটির সাথে প্রথম value তুলনা করা হবে।

উদাহরণ:

const _ = require('lodash');

let obj1 = { a: 1, b: { x: 10, y: 20 } };
let obj2 = { a: 1, b: { x: 10, y: 20 } };

console.log(_.isEqual(obj1, obj2)); // true

let obj3 = { a: 1, b: { x: 10, y: 21 } };
console.log(_.isEqual(obj1, obj3)); // false

ব্যাখ্যা: এখানে, প্রথম উদাহরণে obj1 এবং obj2 দুটি অবজেক্ট একে অপরের সাথে পুরোপুরি সমান, কারণ তাদের প্রতিটি প্রোপার্টি এবং nested value একই। কিন্তু দ্বিতীয় উদাহরণে, obj1 এবং obj3 এর মধ্যে শুধু y এর মান আলাদা হওয়ায়, এটি false রিটার্ন করবে।


২. Arrays এর মধ্যে Deep Equality Check

_.isEqual() শুধুমাত্র objects নয়, arrays এর মধ্যেও deep equality পরীক্ষা করতে সক্ষম।

উদাহরণ:

const _ = require('lodash');

let array1 = [1, 2, [3, 4], { a: 5 }];
let array2 = [1, 2, [3, 4], { a: 5 }];
let array3 = [1, 2, [3, 5], { a: 5 }];

console.log(_.isEqual(array1, array2)); // true
console.log(_.isEqual(array1, array3)); // false

ব্যাখ্যা: এখানে array1 এবং array2 পুরোপুরি সমান, কারণ তাদের ভেতরের সবগুলো উপাদান একে অপরের সাথে পুরোপুরি মিলে যায়। কিন্তু array1 এবং array3 এর মধ্যে [3, 4] এবং [3, 5] এর মধ্যে পার্থক্য রয়েছে, তাই এটি false রিটার্ন করবে।


৩. Objects এবং Arrays মিশ্রিত (Mixed Objects and Arrays) এর মধ্যে Deep Equality Check

Lodash এর _.isEqual() ফাংশনটি মিশ্রিত objects এবং arrays এর মধ্যে equality চেক করতে পারদর্শী।

উদাহরণ:

const _ = require('lodash');

let mixed1 = { a: [1, 2, 3], b: { x: 10, y: 20 } };
let mixed2 = { a: [1, 2, 3], b: { x: 10, y: 20 } };
let mixed3 = { a: [1, 2, 3], b: { x: 10, y: 21 } };

console.log(_.isEqual(mixed1, mixed2)); // true
console.log(_.isEqual(mixed1, mixed3)); // false

ব্যাখ্যা: mixed1 এবং mixed2 দুটি object এবং তাদের মধ্যে nested arrays এবং objects সম্পূর্ণভাবে সমান, তাই এটি true রিটার্ন করে। তবে mixed1 এবং mixed3 এর মধ্যে nested y এর মানের পার্থক্য আছে, তাই এটি false রিটার্ন করবে।


৪. _.isEqual() এর ব্যবহারিক পরিস্থিতি

_.isEqual() সাধারণত নিচের পরিস্থিতিতে ব্যবহৃত হতে পারে:

  • Objects এর মধ্যে deep comparison: যখন আপনি দুটি object এর মধ্যে গভীর তুলনা করতে চান এবং নিশ্চিত হতে চান যে তাদের সব প্রোপার্টি এবং nested values একে অপরের সাথে মিলে।
  • Arrays এর মধ্যে equality check: যখন আপনি দুটি array এর মধ্যে তুলনা করতে চান এবং দেখতে চান যে তাদের উপাদানগুলির মান এবং কাঠামো একে অপরের সাথে সমান কিনা।
  • API Responses চেক করা: যখন API থেকে প্রাপ্ত ডেটা পরীক্ষা করতে চান যে, পূর্ববর্তী response এর সাথে বর্তমান response একে অপরের সাথে সমান কিনা।
  • State management: State management এর ক্ষেত্রে, বিশেষ করে React বা Redux এর মত ফ্রেমওয়ার্কে, দুটি state এর মধ্যে deep comparison করার জন্য ব্যবহার করা হয়।

৫. পারফরম্যান্স সংক্রান্ত দিক

_.isEqual() গভীর সমতা চেক করার কারণে এর পারফরম্যান্স কিছুটা কম হতে পারে যখন বড় বা জটিল nested structures এর মধ্যে চেক করতে হয়। যেহেতু এটি প্রতিটি স্তরের value তুলনা করে, তাই এর কার্যকারিতা কিছুটা ধীর হতে পারে, বিশেষ করে বড় ডেটা structures এ।


উপসংহার

Lodash এর _.isEqual() ফাংশনটি অত্যন্ত শক্তিশালী এবং ব্যবহারিকভাবে দুটি object বা array এর মধ্যে deep equality চেক করার জন্য অসাধারণ একটি টুল। এটি objects এবং arrays এর মধ্যে nested values চেক করতে পারে, এবং যদি সবগুলো স্তরের মান একে অপরের সাথে মিলে যায়, তবে এটি true রিটার্ন করে। এটি খুবই উপকারী যখন আপনি complex data structures এর মধ্যে তুলনা করতে চান।

Content added By
Promotion

Are you sure to start over?

Loading...