ניסוי #31: מיפוי ח״כים למפלגותיהם באמצעות map ב-ECMAScript 6

מטרת הניסוי

ליצור מיפוי בין חברי כנסת ובין מפלגותיהם באמצעות map ב-ECMAScript 6.

7960500614_4239eda166_z

הציוד הדרוש

עורך טקסט, דפדפן נתמך.

רקע

מהי מפה (Map) ב-ECMAScript 6?

אובייקט המכיל צמדים של מפתח וערך (key-value).

מה יכולים לכלול הערכים והמפתחות במפה?

כל אובייקט או משתנה פרימיטיבי.

מהו ההבדל בין מפות לאובייקטים? הרי שניהם הם מבני נתונים של מפתח-ערך.

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

כיצד יוצרים מפה?

let map = new Map();

כיצד מוסיפים פריט מפה?

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

let israel = {flag: 'blue'}
map.set(israel, 'asia');

כיצד קוראים ערך לפי מפתח במפה?

map.get(israel); // 'asia'

כיצד קוראים את מספר הפריטים במפה?

map.size(); // 1

כיצד מוחקים את כל הפריטים במפה?

map.clear();

כיצד סורקים את פריטי המפה?

for (let key of map.keys()){
  console.log(key);
}

for (let value of map.values()){
  console.log(value);
}

מהלך הניסוי

ניצור אובייקטים המייצגים מפלגות

let likud = {
  letters: "מחל",
  caption: "הליכוד"
};
let zioni = {
  letters: "אמת",
  caption: "המחנה הציוני"
};

ניצור מערכים המייצגים ח״כים במפלגות

let likud_politicians = ['Netanyahu', 'Ardan', 'Katz'];
let zioni_politicians = ['Herzog', 'Livni'];

נמפה בין הח״כים לבין המפלגה אליה הם משתייכים, באמצעות מפה:

let parties = new Map();
parties.set(likud, likud_politicians);
parties.set(zioni, zioni_politicians);

נסרוק את מפת המפלגות ונציג את החברים בהן:

parties.forEach(function(politicians, party){
  console.log(party.caption + " - " + party.letters + ": " + politicians + "<br>");
// הליכוד - מחל:Netanyahu,Ardan,Katz
// המחנה הציוני - אמת:Herzog,Livni
});

תוצאות הניסוי (להריץ בפיירפוקס 34+):