{"ScriptPreparationCode":"let id = 0;\r\nnamespaces = [undefined, \u0027dee11d4e-63c6-4d90-983c-5c9f1e79e96c\u0027, \u00273b241101-e2bb-4255-8caf-4136c566a962\u0027];\r\n\r\nconst elementsPage = new Array(1000).fill({}).map((value, index) =\u003E index);\r\nconst navBar = new Array(1000).fill({}).map((value, index) =\u003E \u0060${namespaces[1]}.${index}\u0060);\r\nconst somethingElse = new Array(1000).fill({}).map((value, index) =\u003E \u0060${namespaces[2]}.${index}\u0060);\r\n\r\nids = [\r\n ...elementsPage,\r\n ...somethingElse,\r\n ...navBar\r\n];\r\n\r\nentities = {\r\n ...elementsPage.reduce((acc, val) =\u003E ({...acc, [val]: {}}), {}),\r\n ...navBar.reduce((acc, val) =\u003E ({...acc, [val]: {ns: val}}), {}),\r\n ...somethingElse.reduce((acc, val) =\u003E ({...acc, [val]: {ns: val}}), {}),\r\n};","TestCases":[{"Name":"Group by split (unknown namespaces)","Code":"const idsByNamespace = {};\r\n\r\nfor (let i = 0; i \u003C ids.length; i\u002B\u002B) {\r\n const idParts = (ids[i].split \u0026\u0026 ids[i].split(\u0027.\u0027)) || [ids[i]];\r\n// if (!idParts[1]) {\r\n//\tif (!idsByNamespace[\u0027\u0027]) {\r\n // \tidsByNamespace[\u0027\u0027] = [entities[i]];\r\n //} else {\r\n\t//\tidsByNamespace[\u0027\u0027].push(entities[i]);\r\n //}\r\n //else {\r\n if (!idsByNamespace[idParts[0]]) {\r\n \tidsByNamespace[idParts[0]] = [entities[i]];\r\n } else {\r\n \tidsByNamespace[idParts[0]].push(entities[i]);\r\n }\r\n //}\r\n}","IsDeferred":false},{"Name":"Known namespaces","Code":"const idsByNamespace = {};\r\n\r\nnamespaces.forEach(ns =\u003E {\r\n // TODO: with number\r\n\tidsByNamespace[ns] = ids.filter(id =\u003E (ns === undefined \u0026\u0026 Number.isInteger(id)) || (id.startsWith \u0026\u0026 id.startsWith(\u0060${ns}.\u0060))).map(id =\u003E entities[id])\r\n});\r\n","IsDeferred":false},{"Name":"Convert all from ids to entities (map)","Code":"const idsIntoEntityArray = ids.map(id =\u003E entities[id]);","IsDeferred":false},{"Name":"Convert all from entities to entitiesArray (object keys)","Code":"namespaces.reduce((acc, ns) =\u003E {\r\n return {...acc,\r\n\t[ns]: Object.entries(entities).filter(([key, value]) =\u003E value.ns === ns)\r\n }\r\n}, {});\r\n","IsDeferred":false},{"Name":"Take all and filter by namespace","Code":"const eArray = ids.map(id =\u003E entities[id]);\r\n\r\nnamespaces.reduce((acc, ns) =\u003E {\r\n return {...acc,\r\n\t[ns]: eArray.filter(e =\u003E e.ns === ns)\r\n }\r\n}, {});\r\n","IsDeferred":false}]}