_.find এবং _.detect কী?
Underscore.js-এ _.find এবং _.detect দুটি ফাংশন ব্যবহৃত হয় একই কাজের জন্য, যা একটি অ্যারে বা অবজেক্ট থেকে নির্দিষ্ট শর্তে মিল থাকা প্রথম উপাদানটি খুঁজে বের করে। এই দুটি ফাংশনের মধ্যে কোনো পার্থক্য নেই, এবং উভয়ই একইভাবে কাজ করে। _.find হল আধুনিক নাম, এবং _.detect একটি পুরানো নাম ছিল, তবে তারা এখন একে অপরের প্রতিস্থাপন হিসেবে কাজ করে।
এটি হাইয়ার অর্ডার ফাংশন (higher-order function) হিসাবে কাজ করে, যেখানে আপনি একটি শর্ত (predicate) প্রদান করেন এবং এটি প্রথম মিল পাওয়া উপাদানটি রিটার্ন করে।
_.find এবং _.detect এর সিম্পল সিঁট্যাক্স:
_.find(collection, predicate, [context])
এখানে:
- collection: এটি যে ডেটার উপরে কাজ করা হবে (অ্যারে, অবজেক্ট, ইত্যাদি)।
- predicate: একটি ফাংশন বা শর্ত যা প্রতিটি উপাদান চেক করবে।
- context (optional): যদি আপনি শর্তের জন্য একটি নির্দিষ্ট কনটেক্সট দিতে চান, তবে এটি প্রদান করা যেতে পারে।
এটি শর্তের সাথে মিল থাকা প্রথম উপাদানটি রিটার্ন করে। যদি কোনো উপাদান না পাওয়া যায়, তবে এটি undefined রিটার্ন করবে।
উদাহরণ ১: অ্যারেতে নির্দিষ্ট উপাদান খোঁজা
ধরা যাক, আপনার কাছে একটি অ্যারে আছে এবং আপনি সেই অ্যারেতে প্রথম এমন ব্যক্তি খুঁজে বের করতে চান যার বয়স ৩০ বছর।
const people = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 30 },
{ name: 'Mike', age: 35 }
];
const result = _.find(people, function(person) {
return person.age === 30;
});
console.log(result);
// আউটপুট: { name: 'Jane', age: 30 }
এখানে, _.find ফাংশনটি প্রথম সেই ব্যক্তি নির্বাচন করেছে যার বয়স ৩০, এবং { name: 'Jane', age: 30 } রিটার্ন করেছে।
উদাহরণ ২: অবজেক্টে নির্দিষ্ট উপাদান খোঁজা
আপনি যদি একটি অবজেক্টে নির্দিষ্ট কনডিশন অনুযায়ী একটি উপাদান খুঁজতে চান, তখনও _.find ব্যবহার করতে পারেন।
const users = {
user1: { name: 'Alice', isActive: false },
user2: { name: 'Bob', isActive: true },
user3: { name: 'Charlie', isActive: false }
};
const result = _.find(users, function(user) {
return user.isActive === true;
});
console.log(result);
// আউটপুট: { name: 'Bob', isActive: true }
এখানে, _.find প্রথম সেই ব্যবহারকারী নির্বাচন করেছে যার isActive প্রপার্টি true ছিল, এবং { name: 'Bob', isActive: true } রিটার্ন করেছে।
উদাহরণ ৩: কাস্টম প্রেডিকেট ফাংশন ব্যবহার
আপনি যদি একটি কাস্টম শর্ত দিয়ে উপাদান খুঁজতে চান, তাহলে আপনি সেই শর্তের জন্য একটি ফাংশন প্রদান করতে পারেন।
const products = [
{ name: 'Laptop', price: 1000 },
{ name: 'Phone', price: 500 },
{ name: 'Tablet', price: 750 }
];
const expensiveProduct = _.find(products, function(product) {
return product.price > 700;
});
console.log(expensiveProduct);
// আউটপুট: { name: 'Laptop', price: 1000 }
এখানে, _.find প্রথমে সেই পণ্য নির্বাচন করেছে যার মূল্য ৭০০ এর বেশি, এবং { name: 'Laptop', price: 1000 } রিটার্ন করেছে।
_.find এবং _.detect এর মধ্যে পার্থক্য
যদিও _.find এবং _.detect একই কাজ করে, _.find আধুনিক নাম হিসেবে পরিগণিত এবং এখন ব্যবহার করা হয়। _.detect পূর্ববর্তী সংস্করণের নাম ছিল এবং এটি বর্তমানে _.find দ্বারা প্রতিস্থাপিত হয়েছে। তবে, কিছু পুরানো কোডবেসে এখনও _.detect ব্যবহৃত হতে পারে, তবে তা _.find দিয়েই পরিবর্তন করা উচিত।
সারাংশ
_.find এবং _.detect Underscore.js বা Lodash-এ ব্যবহৃত দুটি গুরুত্বপূর্ণ ফাংশন যা ডেটার মধ্যে শর্তানুসারে প্রথম উপাদান খুঁজে বের করে। এটি অ্যারে বা অবজেক্টের সাথে কাজ করে এবং ডেটার ম্যানিপুলেশনকে সহজ এবং দ্রুত করে তোলে। আপনি যখন একটি শর্তের ভিত্তিতে প্রথম উপাদানটি খুঁজতে চান, তখন এই ফাংশনটি অত্যন্ত কার্যকরী।
Read more