{"ScriptPreparationCode":"var elementsMap = {};\r\n\r\nfor (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n elementsMap[\u0027key_\u0027 \u002B i] = { i };\r\n}\r\n\r\nfunction filterMapInPairs(map, predicate) {\r\n const result = {};\r\n for (const id1 in map) {\r\n if (result[id1])\r\n continue;\r\n for (const id2 in map) {\r\n if (id1 === id2)\r\n continue;\r\n if (predicate(map[id1], map[id2])) {\r\n result[id1] = map[id1];\r\n result[id2] = map[id2];\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction filterMapInPairsOptimized(map, predicate) {\r\n const result = {};\r\n const ids = [];\r\n for (const id in map) {\r\n ids.push(id);\r\n if (ids.length !== 1 \u0026\u0026 predicate(map[ids[0]], map[id])) {\r\n result[ids[0]] = map[ids[0]];\r\n result[id] = map[id];\r\n }\r\n }\r\n for (let i = 1, { length } = ids; i \u003C length; i\u002B\u002B) {\r\n for (let j = i \u002B 1; j \u003C length; j\u002B\u002B) {\r\n if ((!result[ids[i]] || !result[ids[j]]) \u0026\u0026\r\n predicate(map[ids[i]], map[ids[j]])) {\r\n result[ids[i]] = map[ids[i]];\r\n result[ids[j]] = map[ids[j]];\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","TestCases":[{"Name":"filterMapInPairs","Code":"filterMapInPairs(elementsMap, (el1, el2) =\u003E ((el2.i - el1.i) % 10) === 0)","IsDeferred":false},{"Name":"filterMapInPairsOptimized","Code":"filterMapInPairsOptimized(elementsMap, (el1, el2) =\u003E ((el2.i - el1.i) % 10) === 0)","IsDeferred":false}]}