{"ScriptPreparationCode":"function uniqueBy(list, predicate, extractor) {\r\n \tconst a = new Map(list.map(l =\u003E [predicate(l), l]))\r\n return extractor(a)\r\n}\r\n\r\nfunction extractorDeconstruct(iterator) {\r\n\treturn [...iterator.values()]\r\n}\r\n\r\nfunction extractorArrayFrom(iterator) {\r\n \treturn Array.from(iterator) \r\n}\r\n\r\nfunction objUniqueBy(list, predicate, extractor) {\r\n const a = list.reduce((acc, val) =\u003E Object.assign(acc, { [predicate(val)]: val }), {})\r\n return extractor(a)\r\n}\r\n\r\nfunction extractValuesForIn(obj) {\r\n const t = [];\r\n for(var key in obj) { t.push(obj[key]); }\r\n return t;\r\n}\r\n\r\nfunction extractValuesObject(obj) {\r\n return Object.values(obj);\r\n}\r\n\r\nfunction makeRange(n) {\r\n let range = []\r\n for (let i = 0; i \u003C n; i\u002B\u002B) {\r\n range.push(i)\r\n }\r\n return range\r\n}","TestCases":[{"Name":"unique by map, extract with deconstruct","Code":"const a = Object.assign(makeRange(3000).map(i =\u003E ({ a: i, b: 1})), makeRange(1000).map(i =\u003E ({ a: i, b: 2})))\r\nuniqueBy(a, (x) =\u003E x[\u0027a\u0027], extractorDeconstruct)","IsDeferred":false},{"Name":"obj UniqueBy, extract with for...in loop","Code":"const a = Object.assign(makeRange(3000).map(i =\u003E ({ a: i, b: 1})), makeRange(1000).map(i =\u003E ({ a: i, b: 2})))\r\nobjUniqueBy(a, (x) =\u003E x[\u0027a\u0027], extractValuesForIn);","IsDeferred":false},{"Name":"obj UniqueBy, extract with Object.values()","Code":"const a = Object.assign(makeRange(3000).map(i =\u003E ({ a: i, b: 1})), makeRange(1000).map(i =\u003E ({ a: i, b: 2})))\r\nobjUniqueBy(a, (x) =\u003E x[\u0027a\u0027], extractValuesObject);","IsDeferred":false},{"Name":"unique by map, extract with ArrayFrom","Code":"const a = Object.assign(makeRange(3000).map(i =\u003E ({ a: i, b: 1})), makeRange(1000).map(i =\u003E ({ a: i, b: 2})))\r\nuniqueBy(a, (x) =\u003E x[\u0027a\u0027], extractorArrayFrom)","IsDeferred":false}]}