জাভাস্ক্রিপ্টে অনেক বিল্ট-ইন ফাংশন রয়েছে একটি নির্দিষ্ট কাজ সম্পন্ন করার জন্য। কিন্তু যদি আমরা সেসব বিল্ট-ইন ফাংশদ দিয়ে সাধারণভাবে কোনো প্রোগ্রাম সমাধান করতে চাই, তবে কোডটি সংক্ষিপ্ত (concise) নাও হতে পারে। জাভাস্ক্রিপ্টে কিছু বিল্ট-ইন হাইয়ার-অর্ডার ফাংশন (higher-order functions)ও রয়েছে। এই হাইয়ার-অর্ডার ফাংশনগুলো কোডের দৈর্ঘ্য কমায়, পাঠযোগ্যতা (readability) বাড়ায় এবং অ্যাক্সেসিবিলিটি সহজ করে। কিছু হাইয়ার-অর্ডার ফাংশন হলো map, filter এবং reduce। filter হাইয়ার-অর্ডার ফাংশন সম্পর্কে আলোচনা করা যাক।
উদাহরণ
যখন হাইয়ার-অর্ডার ফাংশন নেই, তখন প্রোগ্রামের কোড অনেক লাইন নিতে পারে। নিচের উদাহরণে, একটি নতুন অ্যারে নেওয়া হয়েছে, যদিও প্রদত্ত অ্যারেটিই কাজ চালাতে যথেষ্ট। একটি for-loop, যা হাইয়ার-অর্ডার ফাংশন থাকলে অপ্রয়োজনীয়, লুপ চালাতে নেওয়া হয়েছে।
<html> <body> <script>
const name = [];
var persons = [
{ name: 'Frodobaggins'},
{ name: 'aragorn'},
{ name: 'gandalf'},
{ name: 'pippin'},
{ name: 'nazgul'},
];
for(let i = 0; i < persons.length; i++) {
if(persons[i].name.length > 6) {
name.push(persons[i]);
}
}
document.write(JSON.stringify(name));
</script> </body> </html>
আউটপুট
[{"name":"Frodobaggins"},{"name":"aragorn"},{"name":"gandalf"}]
উদাহরণ
নিচের উদাহরণে, একটি হাইয়ার-অর্ডার ফাংশন filter ব্যবহার করা হয়েছে। উপরের উদাহরণের সাথে তুলনা করলে, নিচের উদাহরণে কোডের লাইন কম নেওয়া হয়েছে। এখানে কোনো নতুন অ্যারে নেওয়া হয়নি এবং for-loop ও ব্যবহার করা হয়নি।
<html> <body> <script>
const persons = [
{ name: 'Frodobaggins'},
{ name: 'aragorn'},
{ name: 'gandalf'}, { name: 'pippin'}, { name: 'nazgul'},
];
const name = persons.filter(person => person.name.length > 7);
document.write(JSON.stringify(name));
</script> </body> </html>
আউটপুট
[{"name":"Frodobaggins"}]