একটি ফাংশন ডিফাইন করার জন্য ফাংশন ডিক্লারেশন আর ফাংশন এক্সপ্রেশনের পাশাপাশি JavaScript-এ আরও একটি অত্যন্ত সংক্ষিপ্ত সিনট্যাক্স রয়েছে। এই ফাংশনগুলোকে অ্যারো ফাংশন বলা হয়।
এখানে একটি ফাংশন ডিক্লারেশন আর একটি অ্যারো ফাংশনের মধ্যে তুলনা দেওয়া হলো।
function addUpTwoNumbers(num1, num2) {
return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
return num1 + num2;
};
যদি ফাংশনের বডিতে শুধু একটি রিটার্ন স্টেটমেন্ট থাকে, যেমন উপরের উদাহরণে, তাহলে {} আর return কিওয়ার্ড বাদ দেওয়া যায়।
যদি শুধু একটি প্যারামিটার থাকে, তাহলে বন্ধনী ()-ও বাদ দেওয়া যায়।
const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;
ফাংশন কলে সরাসরি ছোট কলব্যাক ফাংশন ডিফাইন করতে অ্যারো ফাংশন প্রায়ই ব্যবহৃত হয়।
applyToSquare(number => number * number);
অ্যারে-এ অ্যারেটির বিষয়বস্তু বিশ্লেষণ করার জন্য বিল্ট-ইন মেথড থাকে।
এই মেথডগুলোর বেশিরভাগই একটি ফাংশন আর্গুমেন্ট হিসেবে নেয়, যেটি ট্রু বা ফলস রিটার্ন করে।
এমন একটি ফাংশনকে predicate বলা হয়।
বিল্ট-ইন মেথডগুলো একটি for লুপ বা বিল্ট-ইন forEach মেথডের বদলে ব্যবহার করার জন্য বোঝানো হয়েছে:
for লুপ দিয়ে বিশ্লেষণের উদাহরণ:
const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] === 'two') {
return i;
}
}
// => 1
একটি বিল্ট-ইন মেথড দিয়ে বিশ্লেষণের উদাহরণ:
const numbers = [1, 'two', 3, 'four'];
numbers.indexOf('two');
// => 1
অ্যারে বিশ্লেষণ করার জন্য উপলব্ধ আরও কিছু সহায়ক বিল্ট-ইন মেথড নিচে দেখানো হয়েছে। অ্যারে মেথডের সম্পূর্ণ তালিকার জন্য MDN দেখুন।
includesincludes(value) মেথড নির্ধারণ করে অ্যারেতে কোনো নির্দিষ্ট মান আছে কি না।
মানটি থাকলে এটি true রিটার্ন করে, নাহলে false।
const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false
everyevery(predicate) মেথড একটি ফাংশন নেয়, যেটি একটি প্রেডিকেট।
এটি পরীক্ষা করে অ্যারের সব এলিমেন্ট প্রেডিকেটে পাঠানো হলে true রিটার্ন করে কি না।
অন্য কথায়: মেথডটি পরীক্ষা করে যে এর সব এলিমেন্ট ফাংশন কলে পাস করা পরীক্ষায় উত্তীর্ণ হয়।
প্রতিটি এলিমেন্ট প্রেডিকেট পরীক্ষায় উত্তীর্ণ হলে এটি true রিটার্ন করে, নাহলে false।
const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true
somesome(predicate) মেথড every মেথডের মতোই, তবে অ্যারের অন্তত একটি আইটেম প্রেডিকেট পরীক্ষায় উত্তীর্ণ হলে true রিটার্ন করে।
const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true
findfind(predicate) মেথড অ্যারের যে এলিমেন্টটি predicate পরীক্ষায় উত্তীর্ণ হয়, তার প্রথমটির মান রিটার্ন করে।
যেখানে some() উত্তীর্ণ হলে true রিটার্ন করে, সেখানে find() অ্যারের প্রকৃত মানটি রিটার্ন করে।
অ্যারের কোনো এলিমেন্টই প্রেডিকেট পরীক্ষায় উত্তীর্ণ না হলে মেথডটি undefined রিটার্ন করে।
const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1
findIndexfindIndex(predicate) মেথড find() মেথডের মতোই, তবে প্রেডিকেট পরীক্ষায় উত্তীর্ণ এলিমেন্টের value-এর বদলে তার (প্রথম) ইনডেক্স রিটার্ন করে।
অ্যারের কোনো এলিমেন্টই প্রেডিকেট পরীক্ষায় উত্তীর্ণ না হলে মেথডটি -1 রিটার্ন করে।
const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1
ভবিষ্যতের জাদুকর Elyse তার প্রশিক্ষণ চালিয়ে যাচ্ছে। তার জাদুর কৌশলগুলো দেখানোর জন্য তাকে কার্ডের কয়েকটি স্তূপ দেওয়া হবে। কাজটা একটু সহজ করতে সে শুধু ১ থেকে ১০ নম্বরের কার্ডগুলোই ব্যবহার করে।
এই অনুশীলনীতে অ্যারের ভেতরের উপাদান বিশ্লেষণ করতে বিল্ট-ইন মেথড ব্যবহার করুন।
Elyse স্তূপে একটি কার্ডের অবস্থান (ইনডেক্স) জানতে চায়।
const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3
Elyse জানতে চায় স্টূপে একটি কার্ড উপস্থিত আছে কি না, অর্থাৎ স্টূপে নির্দিষ্ট কোনো number আছে কি না।
const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true
Elyse জানতে চায় প্রতিটি কার্ড জোড় সংখ্যা কি না, অর্থাৎ স্টূপের প্রতিটি সংখ্যা জোড় number কি না।
isEachCardEven([2, 4, 6, 7]);
// => false
Elyse জানতে চায় স্টূপে কোনো বিজোড় সংখ্যা আছে কি না।
doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true
Elyse প্রথম যে কার্ডটি বিজোড়, তার মান জানতে চায়।
getFirstOddCard([4, 2, 8, 7, 9]);
// => 7
Elyse প্রথম যে কার্ডটি জোড়, তার অবস্থান জানতে চায়।
getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Exercism-এ সাইন আপ করুন, JavaScript ট্র্যাকের 37টি কনসেপ্ট159টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।