دروس الوحدة (2/4)
تقليل
reduce هو أقوى أساليب المصفوفة الوظيفية: فهو يتنقل عبر المجموعة
الاحتفاظ بـ المراكم الذي يتم تحديثه في كل خطوة. عندما تنتهي الحلقة، فإنها ترجع
تراكم.
إمضاء
arr.reduce((acc, elem) => nuovoAcc, valoreIniziale);accيبدأ فيvaloreIniziale.- لكل عنصر يتم حساب
accجديد. - النتيجة النهائية هي آخر
acc.
الأمثلة الأساسية: المجموع والمنتج
const numeri = [3, 1, 4, 1, 5];
const somma = numeri.reduce((a, n) => a + n, 0);
// 14
const prodotto = numeri.reduce((a, n) => a * n, 1);
// 60بدون قيمة أولية، reduce يبدأ من العنصر الأول (يشكل خطرًا على العناصر الفارغة المحتملة
المصفوفات → خطأ). ** قم دائمًا بتمرير قيمة أولية ** عندما تستطيع ذلك.
بناء كائن: العد
const parole = ['mela', 'pera', 'mela', 'kiwi', 'mela'];
const conteggio = parole.reduce((acc, p) => {
acc[p] = (acc[p] ?? 0) + 1;
return acc;
}, {});
// { mela: 3, pera: 1, kiwi: 1 }العثور على الحد الأقصى / دقيقة
const nums = [3, 7, 1, 9, 4];
const max = nums.reduce((a, n) => (n > a ? n : a), -Infinity);
// 9(من الناحية العملية، يفضل الحد الأقصى/الدقيقة Math.max(...nums)؛ وهذا مثال تعليمي.)
جربه
حدد "الإجمالي (العناصر)": تتلقى مجموعة من العناصر { السعر، الكمية } وإرجاع إجمالي الإنفاق (مجموع السعر * الكمية). استخدم تقليل.
إظهار التلميح
تقليل ((a، it) => a + it.price * it.quantity، 0)
الحل متاح بعد 3 من المحاولات
تمرين المراجعة
تعريف `count(words)`: بالنظر إلى مصفوفة من السلاسل، قم بإرجاع كائن يعين كل سلسلة إلى عدد التكرارات. استخدم تقليل مع تراكم الكائن.
إظهار التلميح
acc[p] = (acc[p] ?? 0) + 1; العودة حسب ؛
الحل متاح بعد 3 من المحاولات