שיטת Reduce
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-JavaScript של Coddy. שיעור 54 מתוך 65.
המתודה reduce() מאפשרת לך "לצמצם" מערך לערך יחיד באמצעות הפעלת פונקציה שסופקה עבור כל איבר במערך. הערך היחיד הזה יכול להיות מספר, מחרוזת, אובייקט או אפילו מערך אחר.
הנה התחביר של המצמצם:
array.reduce(function(accumulator, currentValue, currentIndex, array) {
// החזר את הערך המעודכן של accumulator
}, initialValue);רכיבים מרכזיים:
- צובר: צובר את ערכי ההחזרה של פונקציית ה-callback (חשבו עליו כסכום המצטבר)
- currentValue: האיבר הנוכחי שמטופל במערך
- currentIndex: (אופציונלי) האינדקס של האיבר הנוכחי
- מערך: (אופציונלי) המערך שעליו נקראה reduce()
- initialValue: (אופציונלי) ערך שישמש כארגומנט הראשון בקריאה הראשונה לפונקציית ה־callback
לדוגמה – סכום של מספרים:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15איך זה עובד שלב אחר שלב:
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => {
console.log(`Accumulator: ${acc}, Current Value: ${curr}`);
return acc + curr;
}, 0);
// פלט:
// מצטבר: 0, ערך נוכחי: 1
// מצטבר: 1, ערך נוכחי: 2
// מצטבר: 3, ערך נוכחי: 3
// מצטבר: 6, ערך נוכחי: 4
// תוצאה סופית: 10אתגר
קליש ליצור פונקציה בשם calculateGroceryTotal שמקבלת מערך של אובייקטים המייצגים פריטי מכולת.
לכל אובייקט יש שתי תכונות:
name: מחרוזת (שם הפריט)price: מספר (מחיר הפריט)
הפונקציה צריכה:
- לחשב את העלות הכוללת של כל הפריטים
- להחיל הנחה: - אם הסכום הכולל גדול מ-100, יש להחיל הנחה של 10%
- אם הסכום הכולל גדול מ-50 אך קטן מ-100 או שווה לו, יש להחיל הנחה של 5%
- אין הנחה על סכומים של 50 או פחות.
להחזיר אובייקט המכיל:
originalTotal: הסכום לפני ההנחהdiscount: הסכום שנחסךfinalTotal: הסכום הסופי לאחר ההנחה
נסו בעצמכם
function calculateGroceryTotal(items) {
// כתבו כאן את הקוד
return {
originalTotal: Math.round(originalTotal * 100) / 100, // עגלו ל-2 ספרות אחרי הנקודה העשרונית
discount: Math.round(discount * 100) / 100,
finalTotal: Math.round(finalTotal * 100) / 100
};
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
4JSON חלק 2
מעבר על JSONJSON מקונןשרשור אופציונלי ב-JSONהעתקה שטחית והעתקה עמוקהסיכום - חנות אופנייםסיכום - מערכת השמש10ניהול מערכת הפסטיבל
סקירת הפרויקטהוספת סרטים ואולמות2מערכים רב־ממדיים
יסודות המערכים הדו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום – מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים משונניםמערכים תלת־ממדיים ומעבר לכךתבניות נפוצות במערכים דו־ממדייםסיכום – כל מה שצריך לדעת על מערכיםתרגלו בעצמכם: קומפיילר JavaScript אונליין