Q18. What is the difference between map(), filter(), and reduce()?
তিনটি array method কখন কোনটি ব্যবহার হয়, ফলাফল কেমন হয় — উদাহরণসহ।
তিনটিই array-এর উপর কাজ করে, কিন্তু ফলাফল আলাদা। map() প্রতিটি element বদলে নতুন array ফেরত দেয়, filter() কিছু element বেছে নিয়ে নতুন array দেয়, আর reduce() সব element মিলিয়ে একটি একক মান বের করে।
const numbers = [1, 2, 3, 4, 5];
// map — প্রতিটি element বদলায়, দৈর্ঘ্য একই থাকে
const doubled = numbers.map((n) => n * 2);
// filter — শর্ত পূরণ করলে রাখে, বাদ দেয়
const evens = numbers.filter((n) => n % 2 === 0);
// reduce — সব মিলিয়ে একটি মান
const total = numbers.reduce((sum, n) => sum + n, 0);ধাপে ধাপে — map প্রতিটি সংখ্যাকে ২ দিয়ে গুণ করে নতুন array বানায়, তাই ফলাফল ছয়টি element। filter শুধু ২ ও ৪ রাখে। আর reduce যোগ করতে করতে শেষে একটাই সংখ্যায় পৌঁছায়।
console.log(doubled); // [2, 4, 6, 8, 10]
console.log(evens); // [2, 4]
console.log(total); // 15reduce এর accumulator-এর প্রাথমিক মান (0) না দিলে প্রথম element-ই accumulator হয়ে যায় — সংখ্যা যোগ করার কাজে সবসময় 0 দিয়ে শুরু করা নিরাপদ।
const words = ["JavaScript", "is", "fun"];
const sentence = words.reduce(function (acc, word) {
return acc + " " + word;
}, "").trim();
console.log(sentence); // "JavaScript is fun"তিনটি method-ই চেইন করা যায়, আর চেইন করলে মাঝের প্রতিটি ধাপের ফলাফল পরের ধাপে চলে যায়।
const users = [
{ name: "Rahim", age: 25 },
{ name: "Karim", age: 17 },
{ name: "Jamal", age: 30 },
];
const result = users
.filter((user) => user.age >= 18)
.map((user) => user.name);
console.log(result); // ["Rahim", "Jamal"]| Method | ফলাফল | যখন ব্যবহার করবেন |
|---|---|---|
map() | নতুন array, একই দৈর্ঘ্য | প্রতিটি element বদলাতে |
filter() | ছোট বা সমান array | কিছু element বেছে নিতে |
reduce() | একটি একক মান | সব মিলিয়ে হিসাব করতে |
find() | একটি element বা undefined | প্রথম মিল পাওয়া পর্যন্ত থামতে |
some() / every() | boolean | শর্ত যাচাই করতে |
map, filter, reduce মূল array বদলায় না — নতুন array ফেরত দেয়। তাই arr.filter(...) এর ফলাফল ছাড়া পরে arr নিজে থেকে পরিবর্তিত হয় না, বরং ফলাফলটা নতুন variable-এ রাখতে হয়।