خیلیها ()reduce رو فقط برای جمع اعداد میشناسن، اما کاربردش خیلی فراتر از این حرفهاست.
فرض کن اطلاعات سفارشهای یک فروشگاه رو داری و میخوای مجموع مبلغ سفارشها رو حساب کنی:
const orders = [
{ id: 1, total: 120 },
{ id: 2, total: 250 },
{ id: 3, total: 80 }
];
const total = orders.reduce((sum, order) => {
return sum + order.total;
}, 0);
console.log(total); // 450
اما اینجا دقیقاً چه اتفاقی میافته؟
-حالا sum مقدار جمعشده تا این مرحلهست.
- و order سفارش فعلیه.
- 0 مقدار اولیهی جمعه.
- مقدار return در هر مرحله، بهعنوان sum مرحله بعد استفاده میشه.
یه کاربرد حرفهایتر 👀
فرض کن میخوای تعداد تکرار هر محصول رو محاسبه کنی:
const products = ["laptop", "mouse", "laptop", "keyboard", "mouse"];
const counts = products.reduce((acc, product) => {
acc[product] = (acc[product] ?? 0) + 1;
return acc;
}, {});
console.log(counts);
// {
// laptop: 2,
// mouse: 2,
// keyboard: 1
// }
اینجا ()reduce بهجای یک عدد، یک Object ساخته که تعداد تکرار هر محصول رو نگه میداره.
⚠️ یه نکته مهم
همیشه لازم نیست از ()reduce استفاده کنی!
برای فیلتر کردن دادهها، ()filter و برای تبدیل هر آیتم، ()map معمولاً خواناتر هستن. قدرت برنامهنویسی فقط به کوتاه نوشتن کد نیست؛ به انتخاب ابزار درست هم هست.
خلاصه: ()reduce آرایه رو پردازش میکنه و با استفاده از یک Accumulator، در نهایت یک مقدار خروجی میسازه؛ این مقدار میتونه عدد، آرایه، Object یا هر نوع داده دیگهای باشه.
@CodeVerse_dev