Object Functions

আন্ডারস্কোর.জেএস (underscorejs) - Web Development

227

Underscore.js এবং Object Functions

Underscore.js একটি শক্তিশালী লাইব্রেরি যা JavaScript Object Functions সরবরাহ করে। এর মাধ্যমে আপনি অবজেক্টের উপাদানগুলির সাথে বিভিন্ন কার্যকরী অপারেশন করতে পারেন, যেমন অবজেক্টের প্রোপার্টি খোঁজা, ফিল্টার করা, অথবা তাদের মানের সাথে কাজ করা। Underscore.js অবজেক্ট ম্যানিপুলেশনের জন্য বেশ কিছু সহায়ক ফাংশন প্রদান করে যা আপনার কোড আরও কমপ্যাক্ট এবং সহজ করে তোলে।

Underscore.js অবজেক্টের সাথে কাজ করার জন্য বিভিন্ন ফাংশন সরবরাহ করে, যেমন _.keys, _.values, _.pairs, _.extend, _.pick এবং _.omit। এই ফাংশনগুলির মাধ্যমে আপনি অবজেক্টের প্রোপার্টি বা কীগুলির উপর বিভিন্ন অপারেশন করতে পারেন।


Underscore.js Object Functions:

১. _.keys()

_.keys() ফাংশনটি একটি অবজেক্টের সমস্ত কীগুলি (properties) রিটার্ন করে। এটি অবজেক্টের কীগুলির একটি অ্যারে প্রদান করে।

সিনট্যাক্স:

_.keys(object);

উদাহরণ:

var person = { name: "John", age: 30, city: "New York" };
var keys = _.keys(person);
console.log(keys); // ["name", "age", "city"]

এটি অবজেক্টের কীগুলির একটি অ্যারে প্রদান করে।


২. _.values()

_.values() ফাংশনটি একটি অবজেক্টের সমস্ত মান (values) রিটার্ন করে। এটি অবজেক্টের প্রোপার্টি মানের একটি অ্যারে প্রদান করে।

সিনট্যাক্স:

_.values(object);

উদাহরণ:

var person = { name: "John", age: 30, city: "New York" };
var values = _.values(person);
console.log(values); // ["John", 30, "New York"]

এটি অবজেক্টের মানগুলির একটি অ্যারে প্রদান করে।


৩. _.pairs()

_.pairs() ফাংশনটি একটি অবজেক্টকে একটি অ্যারেতে রূপান্তর করে, যেখানে প্রতিটি কীগুলি এবং তার মান একটি উপাদান হিসেবে থাকে। এটি একটি অ্যারে রিটার্ন করে, যার প্রতিটি উপাদান একটি কীগুলির সাথে তার মানের পেয়ার।

সিনট্যাক্স:

_.pairs(object);

উদাহরণ:

var person = { name: "John", age: 30, city: "New York" };
var pairs = _.pairs(person);
console.log(pairs); 
// Output: [["name", "John"], ["age", 30], ["city", "New York"]]

এটি অবজেক্টের কীগুলি এবং তাদের মানের একটি অ্যারে প্রদান করে।


৪. _.pick()

_.pick() ফাংশনটি একটি অবজেক্ট থেকে নির্দিষ্ট কীগুলির মান সংগ্রহ করে। আপনি যেসব কীগুলিকে চয়ন করতে চান তা পাস করতে পারবেন এবং এটি শুধুমাত্র সেই কীগুলির মান রিটার্ন করবে।

সিনট্যাক্স:

_.pick(object, keys);
  • object: অবজেক্ট যা থেকে কীগুলি নির্বাচন করা হবে।
  • keys: একটি বা একাধিক কীগুলির নাম যেগুলি আপনি চয়ন করতে চান।

উদাহরণ:

var person = { name: "John", age: 30, city: "New York" };
var picked = _.pick(person, ['name', 'age']);
console.log(picked); 
// Output: { name: "John", age: 30 }

এটি নির্দিষ্ট কীগুলির মান রিটার্ন করবে।


৫. _.omit()

_.omit() ফাংশনটি একটি অবজেক্ট থেকে নির্দিষ্ট কীগুলি বাদ দিয়ে একটি নতুন অবজেক্ট তৈরি করে। এটি একটি বা একাধিক কীগুলি বাদ দেয়।

সিনট্যাক্স:

_.omit(object, keys);
  • object: অবজেক্ট যা থেকে কীগুলি বাদ দেওয়া হবে।
  • keys: একটি বা একাধিক কীগুলির নাম যেগুলি বাদ দিতে চান।

উদাহরণ:

var person = { name: "John", age: 30, city: "New York" };
var omitted = _.omit(person, ['age']);
console.log(omitted); 
// Output: { name: "John", city: "New York" }

এটি একটি নতুন অবজেক্ট রিটার্ন করবে যেখানে নির্দিষ্ট কীগুলি বাদ দেয়া হয়েছে।


৬. _.extend()

_.extend() ফাংশনটি একটি বা একাধিক অবজেক্টের প্রোপার্টি অন্য একটি অবজেক্টে কপি করে। এটি প্রথম অবজেক্টে অন্য অবজেক্টের প্রোপার্টি যুক্ত করে।

সিনট্যাক্স:

_.extend(destination, *sources);
  • destination: যে অবজেক্টে প্রোপার্টি কপি করা হবে।
  • sources: একটি বা একাধিক অবজেক্ট যার প্রোপার্টি কপি করা হবে।

উদাহরণ:

var person = { name: "John" };
var details = { age: 30, city: "New York" };
_.extend(person, details);
console.log(person); 
// Output: { name: "John", age: 30, city: "New York" }

এটি প্রথম অবজেক্টে অন্য অবজেক্টের প্রোপার্টি কপি করে।


সারাংশ

Underscore.js Object Functions অবজেক্ট ম্যানিপুলেশনের জন্য শক্তিশালী এবং সহজ ইউটিলিটি ফাংশন সরবরাহ করে। আপনি _.keys, _.values, _.pairs, _.pick, _.omit, এবং _.extend এর মতো ফাংশন ব্যবহার করে অবজেক্টের উপর বিভিন্ন কার্যক্রম করতে পারেন। এই ফাংশনগুলির মাধ্যমে ডেটা প্রক্রিয়াকরণ এবং কোড লেখা আরও সহজ, দ্রুত এবং পরিষ্কার হয়ে ওঠে, যা ওয়েব ডেভেলপমেন্টের গতি বাড়ায়। Underscore.js ব্যবহার করার মাধ্যমে আপনি আপনার অবজেক্টের উপর কার্যকরী অপারেশন করতে পারবেন এবং উন্নত কোডিং স্টাইল অর্জন করতে পারবেন।

Content added By

_.keys এবং _.values কি?

Underscore.js লাইব্রেরি এমন কিছু ইউটিলিটি ফাংশন প্রদান করে যা আপনার কোড লেখার প্রক্রিয়াকে আরও সহজ এবং কার্যকর করে তোলে। দুটি খুবই গুরুত্বপূর্ণ ফাংশন হলো _.keys এবং _.values, যা অবজেক্টের কীগুলি এবং ভ্যালুগুলি পৃথকভাবে উদ্ধার করতে ব্যবহৃত হয়। এগুলি জাভাস্ক্রিপ্ট অবজেক্ট থেকে ডেটা অ্যাক্সেস করার জন্য খুবই কার্যকরী টুল।

  • _.keys(object): এটি একটি অবজেক্টের সমস্ত কীগুলির একটি অ্যারে প্রদান করে।
  • _.values(object): এটি একটি অবজেক্টের সমস্ত ভ্যালুগুলির একটি অ্যারে প্রদান করে।

এই দুটি ফাংশন ব্যবহারের মাধ্যমে, আপনি অবজেক্টের কীগুলি বা ভ্যালুগুলি দ্রুত এবং সহজে পেতে পারেন।


_.keys এর উদাহরণ

_.keys ব্যবহার করে আপনি একটি অবজেক্টের সমস্ত কীগুলি একটি অ্যারেতে পেতে পারেন। এটি অবজেক্টের কী-বেসড ডেটাকে এক্সট্র্যাক্ট করতে সহায়ক।

// Underscore.js - _.keys উদাহরণ
const person = {
  name: 'John',
  age: 28,
  job: 'Developer'
};

// অবজেক্টের সমস্ত কী বের করা
const keys = _.keys(person);

console.log(keys);  // আউটপুট: ['name', 'age', 'job']

এখানে, _.keys ফাংশনটি person অবজেক্টের সমস্ত কীগুলি সংগ্রহ করে এবং একটি অ্যারে হিসেবে প্রদান করে।


_.values এর উদাহরণ

_.values ব্যবহার করে আপনি একটি অবজেক্টের সমস্ত ভ্যালুগুলির একটি অ্যারে পেতে পারেন। এটি অবজেক্টের ভ্যালু-বেসড ডেটা এক্সট্র্যাক্ট করতে সহায়ক।

// Underscore.js - _.values উদাহরণ
const person = {
  name: 'John',
  age: 28,
  job: 'Developer'
};

// অবজেক্টের সমস্ত ভ্যালু বের করা
const values = _.values(person);

console.log(values);  // আউটপুট: ['John', 28, 'Developer']

এখানে, _.values ফাংশনটি person অবজেক্টের সমস্ত ভ্যালুগুলি সংগ্রহ করে এবং একটি অ্যারে হিসেবে প্রদান করে।


_.keys এবং _.values এর একটি একসাথে উদাহরণ

একই অবজেক্টের কীগুলি এবং ভ্যালুগুলি একসাথে ব্যবহার করতে, আপনি _.keys এবং _.values উভয় ফাংশনই ব্যবহার করতে পারেন।

// Underscore.js - _.keys এবং _.values একসাথে উদাহরণ
const person = {
  name: 'John',
  age: 28,
  job: 'Developer'
};

// অবজেক্টের কীগুলি এবং ভ্যালুগুলি বের করা
const keys = _.keys(person);
const values = _.values(person);

console.log(keys);   // আউটপুট: ['name', 'age', 'job']
console.log(values); // আউটপুট: ['John', 28, 'Developer']

এখানে, আমরা অবজেক্টের কীগুলি এবং ভ্যালুগুলি আলাদাভাবে সংগ্রহ করেছি এবং এগুলি পৃথকভাবে প্রদর্শন করেছি।


অবজেক্টের কীগুলির এবং ভ্যালুগুলির মেলবন্ধন

_.keys এবং _.values ব্যবহার করে আপনি অবজেক্টের কীগুলি এবং ভ্যালুগুলি একসাথে একটি নতুন অ্যারে বা অবজেক্টে মেলবন্ধন করতে পারেন।

// Underscore.js - _.keys এবং _.values দিয়ে অবজেক্টের কী এবং ভ্যালু একত্রিত করা
const person = {
  name: 'John',
  age: 28,
  job: 'Developer'
};

// কীগুলি এবং ভ্যালুগুলি একসাথে মেলানো
const combined = _.zip(_.keys(person), _.values(person));

console.log(combined);  // আউটপুট: [['name', 'John'], ['age', 28], ['job', 'Developer']]

এখানে, _.zip ব্যবহার করা হয়েছে যা কীগুলির এবং ভ্যালুগুলির জোড়া তৈরি করে একটি অ্যারে হিসাবে ফিরিয়ে দেয়। প্রতিটি কীগুলির জন্য তার সংশ্লিষ্ট ভ্যালু একটি তালিকায় রয়েছে।


সারাংশ

  • _.keys: এটি একটি অবজেক্টের সমস্ত কীগুলির একটি অ্যারে প্রদান করে।
  • _.values: এটি একটি অবজেক্টের সমস্ত ভ্যালুগুলির একটি অ্যারে প্রদান করে।
  • দুটি ফাংশনই অবজেক্টের কীগুলি এবং ভ্যালুগুলি আলাদাভাবে এক্সট্র্যাক্ট করতে সহায়ক, এবং ডেটা ম্যানিপুলেশনের জন্য খুবই কার্যকরী।

Underscore.js এর _.keys এবং _.values ফাংশনগুলি ছোট এবং কার্যকরী ইউটিলিটি হিসেবে ব্যবহার হয়, যা ওয়েব ডেভেলপমেন্টের বিভিন্ন ক্ষেত্রে অবজেক্টের ডেটা প্রক্রিয়াকরণের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By

_.extend ফাংশন

_.extend হল Underscore.js এর একটি অত্যন্ত ব্যবহৃত ইউটিলিটি ফাংশন যা একটি বা একাধিক অবজেক্টের সমস্ত প্রপার্টি অন্য একটি অবজেক্টে কপি করে। এটি মূলত অবজেক্ট ম্যানিপুলেশনের জন্য ব্যবহৃত হয়, যেখানে আপনি একাধিক অবজেক্টের প্রপার্টি একত্রিত করতে পারেন।

Sintax:

_.extend(destination, *sources)
  • destination: যে অবজেক্টে আপনি প্রপার্টি কপি করতে চান, অর্থাৎ টার্গেট অবজেক্ট।
  • sources: এক বা একাধিক অবজেক্ট, যার প্রপার্টিগুলি destination অবজেক্টে কপি করা হবে।

উদাহরণ:

// দুইটি অবজেক্ট
let person = { name: 'John', age: 30 };
let contact = { email: 'john@example.com', phone: '1234567890' };

// _.extend ব্যবহার করে person অবজেক্টে contact অবজেক্টের প্রপার্টি যুক্ত করা
_.extend(person, contact);

console.log(person);
// আউটপুট: { name: 'John', age: 30, email: 'john@example.com', phone: '1234567890' }

এখানে, _.extend ফাংশনটি contact অবজেক্টের সমস্ত প্রপার্টি person অবজেক্টে কপি করে দিয়েছে। এর ফলে person অবজেক্টে নতুন প্রপার্টি যেমন email এবং phone যোগ হয়েছে।

_.defaults ফাংশন

_.defaults ফাংশনটি একটু ভিন্নভাবে কাজ করে। এটি কেবলমাত্র প্রথম অবজেক্টে সেই প্রপার্টি কপি করবে যদি সেই প্রপার্টি সেখানে উপস্থিত না থাকে। এর মানে হল, _.defaults ফাংশনটি আপনার টার্গেট অবজেক্টে নতুন প্রপার্টি যোগ করবে যদি সেই প্রপার্টি ইতোমধ্যে সেখানে না থাকে। এটি মূলত আপনার অবজেক্টকে "ডিফল্ট মান" সরবরাহ করার জন্য ব্যবহৃত হয়।

Sintax:

_.defaults(object, *defaults)
  • object: যে অবজেক্টে আপনি ডিফল্ট প্রপার্টি যোগ করতে চান।
  • defaults: এক বা একাধিক অবজেক্ট, যা ডিফল্ট মান সরবরাহ করবে যদি সেই প্রপার্টি object অবজেক্টে উপস্থিত না থাকে।

উদাহরণ:

// দুটি অবজেক্ট
let user = { name: 'John' };
let defaultSettings = { name: 'Unknown', age: 25, location: 'USA' };

// _.defaults ব্যবহার করে user অবজেক্টে defaultSettings এর ডিফল্ট প্রপার্টি যোগ করা
_.defaults(user, defaultSettings);

console.log(user);
// আউটপুট: { name: 'John', age: 25, location: 'USA' }

এখানে, _.defaults ফাংশনটি user অবজেক্টে ডিফল্ট মান হিসেবে age এবং location যোগ করেছে, যেহেতু user অবজেক্টে সেগুলি উপস্থিত ছিল না। তবে name প্রপার্টি আগেই user অবজেক্টে উপস্থিত ছিল, তাই এটি পরিবর্তন হয়নি।


_.extend এবং _.defaults এর মধ্যে পার্থক্য

ফিচার_.extend_.defaults
কাজের পদ্ধতিএক বা একাধিক অবজেক্টের প্রপার্টি কপি করে টার্গেট অবজেক্টে যুক্ত করে।কেবলমাত্র টার্গেট অবজেক্টে প্রপার্টি যোগ করা হয়, যদি তা সেখানে না থাকে।
ডেটা ওভাররাইট করাযদি প্রপার্টি টার্গেট অবজেক্টে আগে থেকেই থাকে, তবে তা ওভাররাইট করা হয়।পুরানো মান অপরিবর্তিত থাকে, নতুন মান যোগ করা হয় শুধুমাত্র যদি প্রপার্টি না থাকে।
ব্যবহারযখন একাধিক অবজেক্টের প্রপার্টি একত্রিত করতে চান।যখন ডিফল্ট মান সরবরাহ করতে চান যদি অবজেক্টে কিছু প্রপার্টি অনুপস্থিত থাকে।

সারাংশ

  • _.extend ফাংশনটি মূলত একাধিক অবজেক্টের প্রপার্টি একত্রিত করতে ব্যবহৃত হয়, এবং এটি যদি টার্গেট অবজেক্টে আগে থেকেই কোন প্রপার্টি থাকে তবে সেই প্রপার্টি ওভাররাইট করে।
  • _.defaults ফাংশনটি প্রপার্টি কেবলমাত্র যোগ করবে যদি সেই প্রপার্টি টার্গেট অবজেক্টে উপস্থিত না থাকে। এটি ডিফল্ট মান প্রদান করার জন্য উপযুক্ত।

এটি আপনার অবজেক্ট ম্যানিপুলেশনে সঠিক ফাংশন নির্বাচন করতে সহায়তা করবে, নির্ভর করে আপনি কী ধরনের ডেটা ম্যানিপুলেশন করতে চান।

Content added By

.pick এবং _.omit এর ভূমিকা

Underscore.js একটি শক্তিশালী জাভাস্ক্রিপ্ট লাইব্রেরি, যা ডেটা ম্যানিপুলেশন এবং ফাংশনাল প্রোগ্রামিং সহজ করে তোলে। এর মধ্যে দুটি গুরুত্বপূর্ণ ফাংশন হলো _.pick এবং _.omit, যেগুলি অবজেক্ট থেকে নির্দিষ্ট প্রপার্টি নির্বাচন বা বাদ দেওয়ার জন্য ব্যবহৃত হয়। এই দুটি ফাংশনটি অবজেক্টের প্রপার্টি নিয়ে কাজ করতে ব্যবহৃত হয় এবং অনেক ক্ষেত্রে কোডের সুবিধার্থে ব্যবহার করা যায়।

  • _.pick: একটি অবজেক্ট থেকে শুধুমাত্র নির্দিষ্ট প্রপার্টি নির্বাচন করে।
  • _.omit: একটি অবজেক্ট থেকে নির্দিষ্ট প্রপার্টি বাদ দেয়।

_.pick ফাংশন

_.pick একটি অবজেক্ট থেকে নির্দিষ্ট প্রপার্টি বা কীগুলি নির্বাচন করে এবং একটি নতুন অবজেক্ট রিটার্ন করে। এটি অবজেক্টের অন্যান্য প্রপার্টি বাদ দিয়ে কেবলমাত্র নির্বাচিত প্রপার্টি সংরক্ষণ করে।

সিঁট্যাক্স:

_.pick(object, *keys)
  • object: যে অবজেক্ট থেকে প্রপার্টি নির্বাচন করা হবে।
  • keys: নির্বাচিত প্রপার্টির কীগুলি (এগুলি একাধিক হতে পারে)।

উদাহরণ:

const person = {
  name: 'John',
  age: 30,
  occupation: 'Developer',
  country: 'USA'
};

const picked = _.pick(person, ['name', 'age']);
console.log(picked);
// আউটপুট: { name: 'John', age: 30 }

এখানে, _.pick ফাংশনটি person অবজেক্ট থেকে কেবল name এবং age প্রপার্টি নির্বাচন করেছে এবং একটি নতুন অবজেক্ট { name: 'John', age: 30 } রিটার্ন করেছে। অবজেক্টের বাকি প্রপার্টি (যেমন occupation, country) বাদ দেওয়া হয়েছে।


_.omit ফাংশন

_.omit একটি অবজেক্ট থেকে নির্দিষ্ট প্রপার্টি বাদ দেয় এবং একটি নতুন অবজেক্ট রিটার্ন করে। এটি অবজেক্ট থেকে কেবলমাত্র অবাঞ্ছিত প্রপার্টি বাদ দিয়ে বাকি সমস্ত প্রপার্টি ধরে রাখে।

সিঁট্যাক্স:

_.omit(object, *keys)
  • object: যে অবজেক্ট থেকে প্রপার্টি বাদ দেওয়া হবে।
  • keys: বাদ দেওয়া প্রপার্টির কীগুলি (এগুলি একাধিক হতে পারে)।

উদাহরণ:

const person = {
  name: 'John',
  age: 30,
  occupation: 'Developer',
  country: 'USA'
};

const omitted = _.omit(person, ['occupation', 'country']);
console.log(omitted);
// আউটপুট: { name: 'John', age: 30 }

এখানে, _.omit ফাংশনটি person অবজেক্ট থেকে occupation এবং country প্রপার্টি বাদ দিয়েছে এবং একটি নতুন অবজেক্ট { name: 'John', age: 30 } রিটার্ন করেছে। অবজেক্টের বাকি প্রপার্টি কিপর্যন্ত সঠিকভাবে রাখা হয়েছে।


_.pick এবং _.omit এর মধ্যে পার্থক্য

  • _.pick: নির্বাচিত প্রপার্টি বা কীগুলি অবজেক্ট থেকে সংগ্রহ করে এবং একটি নতুন অবজেক্ট তৈরি করে, যাতে শুধুমাত্র নির্বাচিত প্রপার্টি থাকে।
  • _.omit: নির্দিষ্ট প্রপার্টি বা কীগুলি অবজেক্ট থেকে বাদ দেয় এবং একটি নতুন অবজেক্ট তৈরি করে, যাতে শুধুমাত্র বাদ না দেওয়া প্রপার্টি থাকে।

উদাহরণ তুলনা

ধরা যাক, আপনার কাছে একটি অবজেক্ট রয়েছে এবং আপনি name এবং age প্রপার্টি রাখতে চান, তবে occupation এবং country বাদ দিতে চান। আপনি দুইটি ফাংশন ব্যবহার করতে পারেন:

_.pick উদাহরণ:

const person = {
  name: 'John',
  age: 30,
  occupation: 'Developer',
  country: 'USA'
};

const picked = _.pick(person, ['name', 'age']);
console.log(picked);
// আউটপুট: { name: 'John', age: 30 }

_.omit উদাহরণ:

const omitted = _.omit(person, ['occupation', 'country']);
console.log(omitted);
// আউটপুট: { name: 'John', age: 30 }

উপরের উদাহরণে, উভয় ফাংশনই একই ফলাফল প্রদান করেছে, তবে _.pick ফাংশনটি সুনির্দিষ্ট প্রপার্টি নির্বাচন করে, আর _.omit নির্দিষ্ট প্রপার্টি বাদ দেয়।


সারাংশ

_.pick এবং _.omit উভয়ই Underscore.js এর শক্তিশালী ফাংশন যা অবজেক্টের প্রপার্টি নির্বাচন এবং বাদ দেওয়ার কাজে ব্যবহৃত হয়। আপনি যখন শুধুমাত্র নির্দিষ্ট প্রপার্টি চাচ্ছেন, তখন _.pick ব্যবহার করবেন, এবং যখন কিছু প্রপার্টি বাদ দিতে চান, তখন _.omit ব্যবহার করবেন। এই দুটি ফাংশন ডেটা ম্যানিপুলেশনকে সহজ এবং কোডের কার্যকারিতা উন্নত করতে সাহায্য করে।

Content added By

_.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(): এটি দুটি অবজেক্ট বা মানের মধ্যে পার্থক্য খুঁজে গভীরভাবে তুলনা করে, এমনকি নেস্টেড অবজেক্টও।

এই দুটি ফাংশন ওয়েব ডেভেলপমেন্টে অনেক কার্যকরী, বিশেষ করে যখন আপনি ডেটার কপি তৈরি করতে চান এবং পরবর্তীতে তাদের মধ্যে তুলনা করতে চান।

Content added By

_.has ফাংশন কি?

_.has হলো Underscore.js এর একটি ইউটিলিটি ফাংশন, যা একটি অবজেক্টে নির্দিষ্ট প্রপার্টি বা কী আছে কিনা তা পরীক্ষা করতে ব্যবহৃত হয়। এটি একটি বুলিয়ান (Boolean) মান ফেরত দেয়, অর্থাৎ, যদি প্রপার্টিটি অবজেক্টে থাকে, তবে এটি true ফেরত দিবে, আর যদি না থাকে তবে false ফেরত দিবে।

এটি সাধারণত ব্যবহার করা হয় যখন আপনি নিশ্চিত হতে চান যে কোনও অবজেক্টে নির্দিষ্ট প্রপার্টি উপস্থিত আছে কিনা, যেমন ডেটা ভ্যালিডেশন বা ডাইনামিক প্রপার্টি চেক করার সময়।

ব্যবহার:

_.has(object, key)

এখানে:

  • object: অবজেক্টটি, যেখানে আপনি প্রপার্টি চেক করতে চান।
  • key: চেক করা প্রপার্টি বা কী, যা আপনি দেখতে চান অবজেক্টে আছে কিনা।

আউটপুট:

  • true: যদি প্রপার্টি অবজেক্টে উপস্থিত থাকে।
  • false: যদি প্রপার্টি অবজেক্টে উপস্থিত না থাকে।

_.has ফাংশনের উদাহরণ

  1. অবজেক্টে প্রপার্টি চেক করা
const user = {
  name: 'John Doe',
  age: 30,
  email: 'john.doe@example.com'
};

console.log(_.has(user, 'name'));  // আউটপুট: true
console.log(_.has(user, 'address'));  // আউটপুট: false

এখানে, _.has(user, 'name') চেক করবে যে user অবজেক্টে name প্রপার্টি আছে কিনা, এবং _.has(user, 'address') চেক করবে address প্রপার্টি রয়েছে কিনা। প্রথমটি true ফেরত দিবে কারণ name প্রপার্টি রয়েছে, এবং দ্বিতীয়টি false ফেরত দিবে কারণ address প্রপার্টি নেই।

  1. নেস্টেড অবজেক্টে প্রপার্টি চেক করা

_.has ফাংশনটি নেস্টেড অবজেক্ট বা অবজেক্টের ভেতর থাকা অবজেক্টগুলিতেও কাজ করে। আপনি যদি নেস্টেড প্রপার্টি চেক করতে চান, তবে শুধু সেই প্রপার্টি বা কীটি নির্দিষ্ট করুন।

const employee = {
  name: 'Jane Smith',
  position: 'Developer',
  contact: {
    phone: '123-456-7890',
    email: 'jane.smith@example.com'
  }
};

console.log(_.has(employee, 'contact.phone'));  // আউটপুট: true
console.log(_.has(employee, 'contact.address'));  // আউটপুট: false

এখানে, _.has(employee, 'contact.phone') চেক করবে employee অবজেক্টের মধ্যে contact অবজেক্টে phone প্রপার্টি রয়েছে কিনা, এবং এটি true ফেরত দিবে। অন্যদিকে, _.has(employee, 'contact.address') চেক করবে contact অবজেক্টে address প্রপার্টি রয়েছে কিনা, এবং এটি false ফেরত দিবে।

  1. অ্যারে থেকে প্রপার্টি চেক করা

_.has ফাংশনটি অ্যারে এর ভিতরেও কাজ করে, বিশেষত যদি অ্যারে অবজেক্ট ধারণ করে থাকে।

const users = [
  { name: 'John', age: 25 },
  { name: 'Alice', age: 30 }
];

console.log(_.has(users[0], 'name'));  // আউটপুট: true
console.log(_.has(users[1], 'email'));  // আউটপুট: false

এখানে, _.has(users[0], 'name') চেক করবে প্রথম অবজেক্টে name প্রপার্টি রয়েছে কিনা, এবং _.has(users[1], 'email') চেক করবে দ্বিতীয় অবজেক্টে email প্রপার্টি রয়েছে কিনা, কিন্তু এটি false ফেরত দিবে কারণ email প্রপার্টি সেখানে নেই।


_.has ফাংশনের সুবিধা

  1. নির্ভরযোগ্য প্রপার্টি চেক: _.has ফাংশনটি সরাসরি ডট নোটেশন বা ব্র্যাকেট নোটেশন ব্যবহার করার চেয়ে আরো নিরাপদ এবং নির্ভরযোগ্য প্রপার্টি চেক করতে সহায়তা করে, কারণ এটি প্রপার্টির উপস্থিতি চেক করে, এবং যদি এটি undefined হয় তবুও ত্রুটি উৎপন্ন হবে না।
  2. নেস্টেড অবজেক্টের জন্য সুবিধাজনক: আপনি সহজে নেস্টেড অবজেক্টের মধ্যে কোনো নির্দিষ্ট প্রপার্টি চেক করতে পারেন, যা সাধারণ JavaScript কোডের মাধ্যমে কঠিন হতে পারে।
  3. ডেটা ভ্যালিডেশন: ডেটা ভ্যালিডেশনের ক্ষেত্রে _.has খুবই কার্যকরী, যেমন ফর্ম ডেটা বা API রেসপন্স চেক করার সময়। এটি নিশ্চিত করতে সহায়তা করে যে নির্দিষ্ট প্রপার্টি উপস্থিত আছে কিনা।

সারাংশ

_.has ফাংশনটি Underscore.js এর একটি শক্তিশালী ইউটিলিটি ফাংশন যা কোনো অবজেক্টে নির্দিষ্ট প্রপার্টি উপস্থিত আছে কিনা তা পরীক্ষা করতে ব্যবহৃত হয়। এটি সহজে এবং কার্যকরভাবে অবজেক্টের প্রপার্টি চেক করার জন্য সাহায্য করে, বিশেষ করে নেস্টেড অবজেক্ট এবং অ্যারে ম্যানিপুলেশনের ক্ষেত্রে।

Content added By
Promotion

Are you sure to start over?

Loading...