Behind the scene of Array.filter() In JavaScript


আমরা যারা জাভাস্ক্রিপ্ট নিয়ে কাজ করি তারা কম বেশি সবাই Array.filter() মেথডের ব্যবহার সম্পর্কে জানি। কিন্তু এই পুরো মেথডটি কিভাবে কাজ করে তা হয়তো সবার জানা নেই বা সবাই জানতে ও চায় না । আমার ও একটা সময় এইটা নিয়ে কোনো চিন্তা বা মাথা ব্যথা কিছুই ছিলো না , কারণ আমি নিজে ও জানতাম এইটা জাভাস্ক্রিপ্টের একটা বিল্ট-ইন মেথড। হ্যাঁ, কথা সত্য যে এইটা বিল্ট-ইন মেথড তাই এইটা নিয়ে আমার কোনো কৌতুহলও ছিলো না, যে এটা কাজ কিভাবে করে? । তবে এইচ এম নাইম ভাইয়ের একটা ভিডিও আমার পুরো চিন্তা ধারণাটা কে পালটে দিয়েছে। তিনি যখন বললেন ‘‘এই বিল্ট-ইন মেথড গুলো তো ব্যবহার করতে কম বেশি সবাই জানেন, তবে এইটা কিভাবে কাজ করে সেটা নিয়ে কি কখনো চিন্তা করছেন? মানে এইগুলো তো আর ম্যাজিক না , অবশ্যই কেউ না কেউ এগুলো তৈরি করছে বলেই আমরা ব্যবহার করতে পারছি।’’ তখন তিনি একটা সোর্স দিলেন (source টি হলো - lodash.com) যেখানে জাভাস্ক্রিপ্ট ফাংশনের একটা পুরো লাইব্রেরি আছে আর বললেন এখান থেকে যেটা মন চায় সেটা নিজে থেকে তৈরি করবেন, অবশ্যই অইটা কপি করে না । সুতরাং সেই থেকেই আমার আসলে এই মেথড টা নিয়ে ঘাটাঘাটি করা।
এবার আসি মূল কথায়,
Array.filter() মেথড আমাদের কি দেয় ?
i ) একটি ফাঁকা অ্যারে দেয়,
ii ) এটি লুপ করে প্রতিটা এলিমেন্টের সাথে যা অরিজিনাল তে দেওয়া ছিল,
iii ) এটি একটি পরীক্ষা পাস করে , যা কলব্যাক ফাংশন নামে পরিচিত ।
* কলব্যাক ফাংশনের গঠন - function cb(value,index,array){
এখানে মূলত কন্ডিশন আমরা দিয়ে থাকি বা রিটার্ন করে থাকি
}
iv )পরিশেষে, এটি একটি নতুন অ্যারে রিটার্ন করে অরিজিনাল অ্যারে কে অপরিবর্তনশীল রেখে।
//কোডটি দেয়া হলো ঃ
//create a custom filter method
function myFilter(arr,cb){
let myArr = [];
for(let i = 0; i < arr.length; i++){
if(cb(arr[i],i,arr)){
myArr.push(arr[i])
}
}
return myArr
}
//my condition for call back function
const removeFalsy = function(value){ return Boolean(value);}
const number = [1,2,3,false,4,'',5,null,6,20,45];
console.log(myFilter(number,removeFalsy));
Subscribe to my newsletter
Read articles from Pial Uddin directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
