تفاوت بین map، filter و reduce در جاوااسکریپت

جاوااسکریپت به عنوان یکی از محبوب‌ترین زبان‌های برنامه‌نویسی، ابزارهای قدرتمندی برای مدیریت آرایه‌ها ارائه می‌دهد. سه متد پرکاربرد آن یعنی map، filter و reduce به شما امکان می‌دهند عملیات پیچیده‌ای را به شیوه‌ای ساده و قابل فهم انجام دهید. در این مقاله قصد داریم تفاوت این سه متد را بررسی کنیم.

1. متد map

متد map برای ایجاد یک آرایه جدید از طریق اعمال یک تابع بر روی هر عنصر آرایه اصلی استفاده می‌شود.

مثال:

const numbers = [1, 2, 3, 4];
const squaredNumbers = numbers.map(num => num * num);
console.log(squaredNumbers); // [1, 4, 9, 16]

ویژگی‌ها:

  • هیچ تاثیری بر آرایه اصلی ندارد.
  • تعداد عناصر آرایه خروجی با آرایه اصلی برابر است.

2. متد filter

متد filter برای فیلتر کردن عناصر یک آرایه بر اساس شرط مشخص استفاده می‌شود. نتیجه این متد یک آرایه جدید شامل عناصر تطبیق داده شده است.

مثال:

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

ویژگی‌ها:

  • تنها عناصری که شرط را برقرار کنند در آرایه خروجی قرار می‌گیرند.
  • ممکن است تعداد عناصر آرایه خروجی کمتر از آرایه اصلی باشد.

3. متد reduce

متد reduce برای کاهش (reduce) یک آرایه به یک مقدار واحد استفاده می‌شود. این کار از طریق اجرای یک تابع accumulator بر روی هر عنصر انجام می‌شود.

مثال:

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

ویژگی‌ها:

  • نوع داده خروجی ممکن است با نوع داده ورودی متفاوت باشد (یک عدد، رشته یا حتی یک شیء).
  • برای پردازش کلی اطلاعات مناسب است.

مقایسه کلی:

ویژگی map filter reduce
هدف تغییر عناصر فیلتر کردن عناصر کاهش به مقدار واحد
خروجی آرایه جدید با همان طول آرایه جدید با طول کمتر مقدار واحد
تغییر در اصل داده ندارد ندارد ندارد
## نتیجه‌گیری

انتخاب بین این سه متد به نیاز شما بستگی دارد:

  • اگر نیاز دارید عناصر را تغییر دهید، از map استفاده کنید.
  • اگر نیاز دارید برخی از عناصر را فیلتر کنید، از filter بهره ببرید.
  • اگر نیاز دارید کل آرایه را به یک مقدار خلاصه کنید، reduce انتخاب مناسبی است.

با شناخت صحیح این ابزارها، کدنویسی شما هم مؤثرتر و هم خواناتر خواهد شد.