מיזוג JSON
-
יש לי JSON שמכיל אלפי רשומות, כל רשומה מכילה 4 נתונים שרלוונטים עבורי, מדינה, עיר, קבוצה, ושם.
אני צריך לבנות היררכייה מהנתונים האלה, שיהיה לי רשימה של כל המדינות, ותחתיהם כל הערים, ותחתיהם כל הקבוצות וכו'.
זה נראה בערך כך:[ { "מדינה": "ישראל", "שם עיר": "אלעד", "שם קבוצה": "אמרי ברוך", }, { "מדינה": "ישראל", "שם עיר": "ירושלים", "שם קבוצה": "קבוצה", }, { "מזהה": "1", "מדינה": "אמריקה", "שם עיר": "בורופארק", "שם קבוצה": "קבוצה 3", }, { "מזהה": "1", "מדינה": "ישראל", "שם עיר": "חיפה", "שם קבוצה": "קבוצה 4", }, ]
ואני מעוניין לחלץ ממנו משהו כזה:
{ "ישראל": { "אלעד": { "אמרי ברוך": [ "" ] }, "ירושלים": { ... }, }, "אמריקה": { ... }, }
מה הדרך הפשוטה ביותר לעשות את זה?
תודה רבה -
נסיון
var my array = [ .... ] myarray.reduce((newObject, entry)=>{ newObject[entry['מדינה']] || newObject[entry['מדינה']] = {}; newObject[entry['מדינה']][entry['עיר']] || newObject[entry['מדינה']][entry['עיר']] = {} ... //וכן על זה הדרך... newObject[entry['מדינה']][entry['עיר']][entry['שם קבוצה']].push(entry['מזהה']); }, {});
דרך אגב, זה היה נראה הרבה יותר נקי אם היית משתמש בשמות משתנים באנגלית, לא?
-
@yossiz אמר במיזוג JSON:
תודה!!
התכוונת לזה?:newObject[entry['מדינה']] = newObject[entry['מדינה']] || {};
בכל אופן עזרת לי מאד!
בקשר לשמות באנגלית, אלו הנתונים שקיבלתי , הם לא התייעצו איתי..
-
@יוסף-בן-שמעון אמר במיזוג JSON:
התכוונת לזה?:
newObject[entry['מדינה']] = newObject[entry['מדינה']] || {};שניהם לא אותו דבר?
-
@יוסף-בן-שמעון אמר במיזוג JSON:
זה עובד בכלל?
לא
ככה זה עובד:newObject[entry['מדינה']] || (newObject[entry['מדינה']] = {});