تفاوت بین 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
انتخاب مناسبی است.
با شناخت صحیح این ابزارها، کدنویسی شما هم مؤثرتر و هم خواناتر خواهد شد.