התרגיל הבא נפל בעריכה בזמן שארגנתי תרגילים לקורס JavaScript. לשמחתי יש בלוג שעוזר לי לשמור שרעיונות לא ילכו לאיבוד. אם יש לכם כמה דקות ורצון להתאמן על רקורסיות אני ממליץ לנסות. (אגב אפשר גם לפתור אותו בשפות אחרות).
והתרגיל-
נתון אוביקט JavaScript מקונן כלומר שבחלק מהמפתחות יש אוביקטים אחרים או מערכים. הנה דוגמה לאחד:
{
a: [
{ a1: 10, a2: 20 },
{ a3: 40, a4: 50 },
{ a1: 20, a2: 20 },
],
b: {
b1: 'yay',
b2: 'jaj',
b3: [
{ b33: 'yay' },
{ b33: 'jaj' },
{ b44: 'zaz' },
]
},
}
כתבו פונקציה בשם groupByDepth שמקבלת את האוביקט מחזירה את כל המפתחות שלו מסודרים לפי העומק. בחישוב העומק אנחנו בודקים כמה אוביקטים ללא מערכים יש מעל המפתח. באוביקט הדוגמה a הוא בעומק 1 וכך גם b, אבל a1 הוא כבר בעומק 2 ו b33 הוא בעומק 3. סך הכל אם נפעיל את הפונקציה על אוביקט הדוגמה נרצה לקבל:
{
1: [ 'a', 'b' ],
2: [ 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3' ],
3: ['b33', 'b44'],
}
פיתרונות אפשר לכתוב למגירה או לשתף פה בתגובות. תהנו ובהצלחה.