Higher-order Functions এর ব্যবহার

Map, Filter, Reduce এবং Chaining - জাভাস্ক্রিপ্ট ইএস৬ (ES6) - Web Development

315

Higher-order functions (HOFs) হলো এমন ফাংশন যা:

  1. এক বা একাধিক ফাংশনকে আর্গুমেন্ট হিসেবে নেয়,
  2. অথবা একটি ফাংশনকে রিটার্ন করে।

এগুলি JavaScript-এর একটি শক্তিশালী কনসেপ্ট এবং ES6 এর নতুন ফিচারগুলি যেমন Arrow Functions এবং Map/Filter/Reduce ইত্যাদির মাধ্যমে আরও সহজ ও প্রাঞ্জলভাবে ব্যবহার করা সম্ভব হয়েছে। Higher-order functions অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং, ক্যালবেক (callback) এবং কম্পোজিশন (composition) এর ক্ষেত্রে খুবই উপকারী।


Higher-order Function এর উদাহরণ

1. Function as Argument (ফাংশন আর্গুমেন্ট হিসেবে ব্যবহার)

একটি সাধারণ উদাহরণ হিসেবে আমরা একটি ফাংশন দেখব, যা অন্য একটি ফাংশনকে আর্গুমেন্ট হিসেবে নেয়।

function greet(name, callback) {
  console.log("Hello, " + name);
  callback();
}

function sayGoodbye() {
  console.log("Goodbye!");
}

greet("Alice", sayGoodbye);
// Output:
// Hello, Alice
// Goodbye!

এখানে greet একটি higher-order function কারণ এটি sayGoodbye ফাংশনকে আর্গুমেন্ট হিসেবে গ্রহণ করছে।

2. Return Function (ফাংশন রিটার্ন করা)

এটি এমন একটি উদাহরণ যেখানে একটি ফাংশন অন্য একটি ফাংশন রিটার্ন করে।

function multiplier(factor) {
  return function(number) {
    return number * factor;
  };
}

const double = multiplier(2);
console.log(double(5));  // 10

const triple = multiplier(3);
console.log(triple(5));  // 15

এখানে, multiplier ফাংশন একটি higher-order function যা একটি ফাংশন রিটার্ন করছে। আমরা পরে double এবং triple ফাংশন তৈরি করেছি, যেগুলি বিভিন্ন গুনফল দেয়।


ES6 Higher-order Functions Examples

ES6 এ map(), filter(), এবং reduce() ফাংশনগুলোর মাধ্যমে higher-order functions এর ব্যবহার আরও জনপ্রিয় হয়েছে। এই ফাংশনগুলো অ্যারে অপারেশনগুলো সহজ করে তোলে।

1. map() Method

map() একটি higher-order function, যা একটি আর্গুমেন্ট হিসেবে কলব্যাক ফাংশন নেয় এবং প্রতিটি উপাদানকে প্রসেস করে একটি নতুন অ্যারে রিটার্ন করে।

const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(num => num * 2);

console.log(doubledNumbers);  // [2, 4, 6, 8, 10]

এখানে map() এর মাধ্যমে আমরা প্রতিটি সংখ্যাকে গুণ করে একটি নতুন অ্যারে তৈরি করেছি।

2. filter() Method

filter() method একটি higher-order function, যা একটি callback ফাংশন নেয় এবং যে সমস্ত উপাদান শর্ত পূরণ করে তাদের একটি নতুন অ্যারে রিটার্ন করে।

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0);

console.log(evenNumbers);  // [2, 4]

এখানে filter() ফাংশন ব্যবহার করে আমরা শুধু even numbers (যারা ২ দিয়ে বিভাজ্য) বের করেছি।

3. reduce() Method

reduce() method একটি higher-order function, যা একটি accumulator তৈরি করে এবং এটি একটি একক মানে রিডিউস করে (যেমন: যোগফল, গুণফল, সর্বোচ্চ মান ইত্যাদি)।

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);

console.log(sum);  // 15

এখানে reduce() ফাংশন ব্যবহার করে আমরা সব সংখ্যা যোগফল বের করেছি।


Higher-order Functions এর সুবিধা

  1. Code Reusability: Higher-order functions ফাংশনগুলোকে পুনঃব্যবহারযোগ্য এবং কমপোজেবল (composable) করে তোলে, যার মাধ্যমে কোডের পুণঃব্যবহার সম্ভব হয়।
  2. Declarative Programming: Higher-order functions প্রোগ্রামিংকে declarative বানায়, অর্থাৎ আমরা কীভাবে একটি কাজ করতে হবে তা নয়, বরং কেবল কী করতে হবে তা লিখি।
  3. Clean Code: Callback বা কমপ্লেক্স লজিক এক্সপ্রেশনগুলির পরিবর্তে সাধারণভাবে কোডটিকে পরিষ্কার, ছোট এবং আরও পাঠযোগ্য করা সম্ভব হয়।

Conclusion

Higher-order functions ES6 এ একটি শক্তিশালী কনসেপ্ট হিসেবে আসে, যা কোডের পুনঃব্যবহারযোগ্যতা, কার্যকারিতা এবং পরিষ্কারতা উন্নত করতে সহায়ক। ES6 এ map(), filter(), এবং reduce() এর মতো ফাংশনগুলির মাধ্যমে এর ব্যবহার আরও জনপ্রিয় এবং সুবিধাজনক হয়ে উঠেছে। Higher-order functions অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং, ফাংশনাল প্রোগ্রামিং এবং কোড কমপোজিশন সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...