Implementation of Find and FindIndex Function In Bengali JavaScript Series ⇾ Chapter Nine (Part -3)
Find and FindIndex Function, Sort, Some and Every Function Uses, Return a Function from Another Function, Recursive, Currying, Function Composition

♗ Love To Play With → JavaScript & NodeJS.
✢ Interested → Web & Backend Development.
↯ Current Stack → MERN Stack
আমরা ফাঙ্কশনাল প্রোগ্রামিং এর শেষ ভাগে চলে এসেছি । আগের part এর ধারাবাহিকতায় চ্যাপ্টার nine এর part-৩ তোমাদের জন্য থাকছে :
Implementation of Find and FindIndex Function,
Sort, Some and Every Function Uses,
Return a Function from Another Function
What is Recursive Function,
What is Currying in JavaScript,
What is Function Composition in JavaScript
আমরা তাহলে এক এক করে সেকশন গুলো শেষ করব ।
078. Implementation of Find and FindIndex Function :
একটা array থেকে সিঙ্গেল value খুঁজে নিয়েআসার জন্য আমরা এই find মেথডকে ব্যবহার করে থাকি । আর findIndex এর কার্য ক্ষমতা একই শুধু array থেকে valur পরিবর্তে index নাম্বার খুঁজে নিয়ে আসে ।
এই মেথড দুইটির ব্যবহার রিয়েল ওয়ার্ড প্রজেক্ট এ অনেক দেখা যায় । ধর অনেক অনেক ডাটা object আকারে আছে । এর মধ্যে থেকে তুমি শুধু অবজেক্ট id জান ,সেক্ষেত্রে এই ফাইন্ড মেথড স্পেসিফিক id এর সাথে ম্যাচ করে ডাটা নিয়ে আসতে হেল্প করে ।
ধরি আমাদের কাছে একটা array আছে যেখানে অনেক গুলো স্টুডেন্ট এর অবজেক্ট আছে । এবং প্রত্যেকটা স্টুডেন্ট এর নাম ,তার id এবং রেটিং বলা আছে ।সেখান থেকে আমরা স্পেসিফিক id ধরে তার ডিটেলস পেতে পারি এই find মেথড এর মাধ্যমে ।
কোড করে দেখে আসি :

var arr = [
{ id: "1", name: "Mai Goodman", rating: 14.9848 },
{ id: "2", name: "Kelsey Galloway", rating: 14.4513 },
{ id: "3", name: "Delaney Byrd", rating: 15.5698 },
{ id: "4", name: "Hugo", rating: 8.048 },
{ id: "6", name: " Melton", rating: 8.1128 },
{ id: "7", name: "Augusta Tomas", rating: 8.1128 },
{ id: "8", name: "Jerry Wilson", rating: 8.1128 },
{ id: "9", name: "Denial Koy", rating: 8.1128 },
{ id: "10", name: "Brows lee", rating: 8.1128 },
];
var result = arr.find(function (value) {
return value.id == 6;
});
console.log(result);
আমাদের কাছে arr নামে যে array আছে সেখানে অবজেক্ট আকারে student এর id ,name এবং rating দেয়া হল ।আমাদের খুঁজে বের করতে হবে ১ নং id তে কে আছে বা ২ নং এ কে আছে ।তাই আমরা ফাইন্ড মেথড নিয়েছি ,আর এই find মেথড রিটার্ন করে boolean মানে true or false যদি true হয় তারমানে খুঁজে পাবে এবং ভ্যারিয়েবল এ স্টোর করবে ।না হয় undefined রিটার্ন করবে ।
find মেথড নিচ্ছে কলব্যাক আর কলব্যাক পেরামিটার নিচ্ছে value ,index আর arr । তবে আমরা যেহেতু শুধু ভ্যালু নিয়ে কাজ করছি তাই ইনডেক্স এবং array ব্যবহার না করলেও চলবে ।এই পেরামিটার গুলো আমরা তখনি ব্যবহার করব যখন দরকার হবে ।এর পরে আমরা রিটার্ন করছি value মানে array এর যে প্রত্যেকটা element আছে তার id ৬ এর সমান কিনা । যেহেতু id ৬ আছে তাই সে true রিটার্ন করছে এবং কনসোল লগ result করে আমরা ওই স্পেসিফিক id এর নাম ও reting দেখতে পাই ।
element যেহেতু অবজেক্ট তাই আমরা value.id মানে
.নোটেশন ব্যবহার করে acess করেছি অবজেক্ট প্রোপার্টিতে ।
ঠিক একই ভাবে findIndex কাজ করে তবে return করে array element এর position বা index ।

আমরা স্পেসিফিক ইনডেক্স খুঁজে পাইছি ।এক্ষেত্রে findingIndex ৪ রিটার্ন করেছে কারণ id ৬ এর পসিশন ৬।
তোমাদের নিশ্চই খেয়াল আছে array ইনডেক্স শুরুহয় ০ থেকে ।
আচ্ছা এটা হল জাভাস্ক্রিপ্ট এর নিজস্য array মেথড ,কিন্তু আমরা যদি চাই যে নিজেরা এই মেথড দুইটা ইমপ্লিমেন্ট করব সেক্ষত্রে :

var arr = [
{ id: "1", name: "Mai Goodman", rating: 14.9848 },
{ id: "2", name: "Kelsey Galloway", rating: 14.4513 },
{ id: "3", name: "Delaney Byrd", rating: 15.5698 },
{ id: "4", name: "Hugo", rating: 8.048 },
{ id: "6", name: " Melton", rating: 8.1128 },
{ id: "7", name: "Augusta Tomas", rating: 8.1128 },
{ id: "8", name: "Jerry Wilson", rating: 8.1128 },
{ id: "9", name: "Denial Joy", rating: 8.1128 },
{ id: "10", name: "Brows lee", rating: 8.1128 },
];
function myFind(arr, cb) {
for (var i = 0; i < arr.length; i++) {
if (cb(arr[i], i, arr)) {
return arr[i];
}
}
}
var x = myFind(arr, function (value) {
return value.id == 6;
});
console.log(x);
সেই আগের ফাঙ্কশন ইম্প্লিমেন্টেশন এর মত myFind নামে ফাঙ্কশন নিব । মিফিন্ড পেরামিটার নিবে দুইটা একটা array আর একটা cb বা কলব্যাক ।array যেহেতু আছে তাই forloop চালাব ।এবারে কন্ডিশন চেক করব । রিটার্ন এ তে আমরা arr[i] মানে ভ্যালুটাকে পেতেচাই ,তবে user দিবে কলব্যাক আর সেখানে চেক করবে সত্য বা মিথ্যা তাই কন্ডিশন এ কলব্যাক invoke করে দিয়েছি ।আর কলব্যাক আর্গুমেন্ট নিচ্ছে value ,index আর array ।myFind কল করলাম আর্গুমেন্ট দিলাম কলব্যাক বানালাম কন্ডিশন দিলাম ।আউটপুট চলে আসলো ঠিকঠাক ।
ঠিক same ভাবে আমরা findIndex করতে পারি সেক্ষেত্রে একটা জায়গায় চেঞ্জ হবে রিটার্ন arr[i] না করে i করবে ।কারণ i হচ্ছে লুপ করে পাওয়া এলিমেন্ট এর index নম্বর ।

jfunction myFindIndex(arr, cb) {
for (var i = 0; i < arr.length; i++) {
if (cb(arr[i], i, arr)) {
return i;
}
}
}
var y = myFindIndex(arr, function (value) {
return value.id == 6;
});
console.log(y);





