{"ScriptPreparationCode":"var myTasks = [];\r\nmyCopy = null;","TestCases":[{"Name":"recursion","Code":"function flattenTasks(tasks, flattenContacts = false){\r\n let flattened = [];\r\n\r\n tasks.forEach(task =\u003E {\r\n if (flattenContacts) {\r\n flattened.push(\r\n {\r\n ...task,\r\n \u0027contacts\u0027: task?.contacts?.length ? task.contacts.map(c =\u003E c.id) : [],\r\n \u0027subtasks\u0027: task?.subtasks?.length ? task.subtasks.map(s =\u003E s.id_uuid) : [],\r\n }\r\n )\r\n } else {\r\n flattened.push(\r\n {\r\n ...task,\r\n \u0027subtasks\u0027: task?.subtasks?.length ? task.subtasks.map(s =\u003E s.id_uuid) : [],\r\n }\r\n )\r\n }\r\n\r\n\r\n if (task?.subtasks?.length) {\r\n flattened = [...flattened, ...flattenTasks(task.subtasks, flattenContacts)];\r\n }\r\n })\r\n\r\n return flattened;\r\n }\r\n\r\nmyCopy = flattenTasks(myTasks);","IsDeferred":false},{"Name":"iterative","Code":"function flattenTasks(tasks) {\r\n const result = [];\r\n const stack = [...tasks];\r\n while (stack.length) {\r\n const task = stack.pop();\r\n result.push({ ...task });\r\n if (task.subtasks) {\r\n stack.push(...task.subtasks);\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nmyCopy = flattenTasks(myTasks);","IsDeferred":false}]}