{"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 badUniqueBy(list, predicate, extractor) {\r\n\tconst keyValuePairs = list.reduce((map, value) =\u003E {\r\n return { ...map, [predicate(value)]: value }\r\n }, {})\r\n return extractor(keyValuePairs);\r\n}\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 getData() {\r\nreturn [{a:0,c:1},{a:1,c:1},{a:2,c:1},{a:3,c:1},{a:4,c:1},{a:5,c:1},{a:6,c:1},{a:7,c:1},{a:8,c:1},{a:9,c:1},{a:10,c:1},{a:11,c:1},{a:12,c:1},{a:13,c:1},{a:14,c:1},{a:15,c:1},{a:16,c:1},{a:17,c:1},{a:18,c:1},{a:19,c:1},{a:20,c:1},{a:21,c:1},{a:22,c:1},{a:23,c:1},{a:24,c:1},{a:25,c:1},{a:26,c:1},{a:27,c:1},{a:28,c:1},{a:29,c:1},{a:30,c:1},{a:31,c:1},{a:32,c:1},{a:33,c:1},{a:34,c:1},{a:35,c:1},{a:36,c:1},{a:37,c:1},{a:38,c:1},{a:39,c:1},{a:40,c:1},{a:41,c:1},{a:42,c:1},{a:43,c:1},{a:44,c:1},{a:45,c:1},{a:46,c:1},{a:47,c:1},{a:48,c:1},{a:49,c:1},{a:0,c:1},{a:1,c:1},{a:2,c:1},{a:3,c:1},{a:4,c:1},{a:5,c:1},{a:6,c:1},{a:7,c:1},{a:8,c:1},{a:9,c:1},{a:10,c:1},{a:11,c:1},{a:12,c:1},{a:13,c:1},{a:14,c:1},{a:15,c:1},{a:16,c:1},{a:17,c:1},{a:18,c:1},{a:19,c:1},{a:20,c:1},{a:21,c:1},{a:22,c:1},{a:23,c:1},{a:24,c:1},{a:25,c:1},{a:26,c:1},{a:27,c:1},{a:28,c:1},{a:29,c:1},{a:30,c:1},{a:31,c:1},{a:32,c:1},{a:33,c:1},{a:34,c:1},{a:35,c:1},{a:36,c:1},{a:37,c:1},{a:38,c:1},{a:39,c:1},{a:40,c:1},{a:41,c:1},{a:42,c:1},{a:43,c:1},{a:44,c:1},{a:45,c:1},{a:46,c:1},{a:47,c:1},{a:48,c:1},{a:49,c:1}]\r\n}","TestCases":[{"Name":"unique by map, extract with deconstruct","Code":"uniqueBy(getData(), (x) =\u003E x[\u0027a\u0027], extractorDeconstruct)","IsDeferred":false},{"Name":"obj UniqueBy, extract with for...in loop","Code":"objUniqueBy(getData(), (x) =\u003E x[\u0027a\u0027], extractValuesForIn);","IsDeferred":false},{"Name":"obj UniqueBy, extract with Object.values()","Code":"objUniqueBy(getData(), (x) =\u003E x[\u0027a\u0027], extractValuesObject);","IsDeferred":false},{"Name":"unique by map, extract with ArrayFrom\t","Code":"uniqueBy(getData(), (x) =\u003E x[\u0027a\u0027], extractorArrayFrom)","IsDeferred":false},{"Name":"bad uniqueBy, reducer has an array deconstructor","Code":"badUniqueBy(getData(), (x) =\u003E x[\u0027a\u0027], extractValuesForIn);","IsDeferred":false}]}