דילוג לתוכן המרכזי
מודול 6 · שיעור 2 מתוך 422/32 בקורס~12 min
שיעורי מודול (2/4)

להפחית

reduce היא החזקה ביותר מבין שיטות המערך הפונקציונלי: היא עוברת באוסף שמירה על מצבר שמתעדכן בכל שלב. כאשר הלולאה מסתיימת, היא מחזירה את מצבר.

חֲתִימָה

JS
arr.reduce((acc, elem) => nuovoAcc, valoreIniziale);
  • acc מתחיל ב-valoreIniziale.
  • עבור כל אלמנט מחושב acc חדש.
  • התוצאה הסופית היא acc האחרון.

דוגמאות בסיסיות: סכום ומוצר

JS
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 מתחיל מהאלמנט הראשון (מסוכן על ריק מערכים → שגיאה). העבירו תמיד ערך התחלתי כשאפשר.

בניית חפץ: ספירה

JS
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 }

מציאת מקסימום / דקות

JS
const nums = [3, 7, 1, 9, 4];

const max = nums.reduce((a, n) => (n > a ? n : a), -Infinity);
// 9

(בפועל עבור מקסימום/דקה העדיפו Math.max(...nums); זו דוגמה דידקטית.)

נסה את זה

פעילות גופנית#js.m6.l2.e1
ניסיונות: 0טוען...

הגדר `total(items)`: אתה מקבל מערך של אובייקטים { price, quantity } ומחזיר את סך ההוצאה (סכום של מחיר*כמות). השתמש להפחית.

טוען עורך...
הצג רמז

reduce((a, it) => a + it.price * it.quantity, 0)

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#js.m6.l2.e2
ניסיונות: 0טוען...

הגדר `ספירה(מילים)`: בהינתן מערך של מחרוזות, החזר אובייקט שממפה כל מחרוזת למספר המופעים. השתמש בצמצום עם מצבר חפצים.

טוען עורך...
הצג רמז

acc[p] = (acc[p] ?? 0) + 1; החזר אcc;

הפתרון זמין לאחר 3 ניסיונות