{"ScriptPreparationCode":"let id = 0\r\n\r\nfunction generateId() {\r\n id = id \u002B 1\r\n return id\r\n}\r\n\r\nfunction generateOject(id) {\r\n changes = []\r\n for (let i = 0; i \u003C 10; i\u002B\u002B) {\r\n changes.push({\r\n id,\r\n oldValue: i * 10,\r\n newValue: i * 20\r\n })\r\n }\r\n return {\r\n id,\r\n name: \u0060Object#${id}\u0060,\r\n changes\r\n }\r\n}\r\n\r\nwindow.lookup = {};\r\n\r\nfor (let i = 0; i \u003C 10000 ; i\u002B\u002B) {\r\n window.lookup[generateId()] = generateOject();\r\n}","TestCases":[{"Name":"Reduce","Code":"const uniqNodes = new Set();\r\nconst changes = Object.values(window.lookup).reduce((changes, node) =\u003E {\r\n if (!uniqNodes.has(node)) {\r\n uniqNodes.add(node);\r\n return changes.concat(node.changes)\r\n }\r\n return changes\r\n}, []);","IsDeferred":false},{"Name":"Flatmap","Code":"const uniqNodes = new Set();\r\nObject.entries(window.lookup).forEach(([_identifier, node]) =\u003E {\r\n if (!uniqNodes.has(node)) {\r\n uniqNodes.add(node);\r\n }\r\n});\r\n\r\nconst changes = Array.from(uniqNodes).flatMap(node =\u003E node.changes)","IsDeferred":false}]}