סטודנטים/ות יקרים/ות!

הפוסט הנ"ל הינו סיכום קצר של השיעור בנקודות + מכיל את הקבצים שתורגלו בכיתה במהלך השיעור.
אם החומר לא מובן, אפשר לשלוח לי מייל או להתקשר : 050-555-6693 (אשתדל לענות, אם לא שלחו SMS ואחזור אליכם)

זכרו כי המפתח להצלחה הינו תרגול

מיון מערכים עם פונקציית MAP בשפת javascript

היי חברים!

בפוסט זה אסביר מעט על פונקציית MAP בשפת javascript

אז נניח ויש לנו מערך (רגיל לחלוטין) למשל

var myarr= [1,2,3,4,5]

ואנחנו מעוניינים לרוץ על המערך, ולבצע כל מיני פעולות על כל הערכים שיש בו.

באמצעות הפונקציה MAP ניתן לעשות זאת בקלות, נוכל לראות בדוגמא הבאה:

var myarr2 = myarr.map(x => x * 2)

המשתנה myarr2 הוא למעשה מכיל את המערך myarr אחרי ביצוע של הפונקציה map

x  מייצג אלמנט בודד במערך בכל ריצה, ואנחנו רוצים להחזיר למערך החדש את הכפולה שלו – אנחנו מגדירים x * 2

בעצם במערך שנמצא ב myarr2 יהיה לנו את הערכים הבאים אחרי הפעולה של map

2,4,6,8,10 מכיון שאלה הערכים של מערך 1 אחרי שהכפלנו כל ערך ב 2.

 

עד כאן, הכל היה פשוט, מקווה שהבנו את הפוענטה של MAP

בוא נסבך קצת את העניינים.

אבל לפני – רקע קטן.

מה קורה במערך הבא?

var myarr = [ [3,4,5], [4,5,6], [76,344,63] ]

אולי לא כל הקוראים נתקלו במערך מהסוג הזה, אסביר:

מערך יכול להכיל מערכים.

כן, כל תא בכל מערך יכול להכיל מערך גם הוא.

למעשה אפילו אפשר ליצור מערך כזה:

var myarr = [ [3,4,5], [4,5,[66,65,]  ], [76,344,63] ]

מאוד פשוט!

מערך יכול להכיל מערך שמכיל מערך.

כלומר במערך בדוגמא האחרונה במקום 1 יש לנו מערך שבמקום 2 שלו נמצא גם מערך.

 

אז בוא נחזור ל map ונתחיל לסבך קצת את העניינים .

נניח ואנחנו רוצים למיין מערך שמכיל מערכים ! כן, ראינו שזה אפשרי , ואנחנו רוצים להוציא מכל מערך שנמצא במערך הראשי – את המספר הכי גדול שיש בתוכו.

איך נעשה זאת? אנחנו נצטרך לכתוב פונקציה, שרצה על המערך הראשי, עושה עליו map , לוקחת כל אחד מהאלמנטים שיש במערך שגם הוא מערך בפני עצמו – ואז נעשה בדיקה איזה מספר הכי גדול בכל תת מערך.

איך נעשה את הבדיקה איזה מספר הכי גדול?

אנחנו נגדיר משתנה בשם big שבתור התחלה יהיה שווה 0 – ואז כל פעם אנחנו נשווה אותו לאותו מספר שיש במערך , ואם המספר שיש במערך הוא יותר גדול אז נעדכן את המשתנה שלנו

הקוד הסופי נראה ככה – מיד אחרי זה ההסבר:

var myArr = [

[3, 5, 5],

[5, 4, 3],

[65, 6, 4]

];

function checkArray(arr) {

var big = 0;

arr.forEach(function(element, i) {

var singleArr = element.map(

x => x)

for (let j = 0; j < singleArr.length; j++) {

if (singleArr[j] > big) {

big = singleArr[j];

};

}

console.log('the biggest is ' + big);

})

};

 

ראשית, נגדיר מערך שמכיל מערכים

var myarr = [
[3, 5, 5],
[5, 4, 3],
[65, 6, 4]
];

כתיבת הפונקציה (קראנו לה checkArray והיא מקבלת מערך )

function checkArray(arr) {
varbig=0;
נגדיר משתנה פנימי לשימוש עזר על מנת לעדכן אותו כל פעם שיש מספר גדול
arr.forEach(function(element, i) {
נרוץ על המערך ב foreach (על זה בפוסט אחר)
var singleArr=element.map(
x=>x)
יצרנו משתנה בשם SingleArr שיכיל ערך בודד מתוך המערך הגדול שמכיל את המערכים
for (let j=0; j<singleArr.length; j++) {
נרוץ בלולאת for נוספת על כל מערך שנמצא במערך הראשי , הלולאה תרוץ מספר פעמים בהתאם למספר התאים שיש באותו מערך
if (singleArr[j] >big) {
ניצור תנאי שאומר, אם המספר שיש באותו מערך בודד מתוך המערך הראשי גדול ממה שיש לנו במשתנה big  – נעדכן את המשנה
big=singleArr[j];
};
}
console.log('the biggest is '+big);
לבסוף נדפיס ל console את המספר הגבוה ביותר.
})
};

 

לצפיה בקוד והרצה דרך codePen

 

מקווה שנהנתם!

 

 

 

סגירת תפריט