{"ScriptPreparationCode":"var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30];\r\n\r\nfunction* map(f, xs) {\r\n for (const x of xs) {\r\n yield f(x);\r\n }\r\n}\r\n\r\nfunction* filter(f, xs) {\r\n for (const x of xs) {\r\n if (f(x)) {\r\n yield(x);\r\n }\r\n }\r\n}\r\n\r\nfunction* filterMap(f, g, xs) {\r\n for (const x of xs) {\r\n if (f(x)) {\r\n yield g(x);\r\n }\r\n }\r\n}","TestCases":[{"Name":"pure js","Code":"var pure = numbers.filter(num =\u003E num % 2 === 0).map(num=\u003E ({\r\n\tresult: num\r\n}));","IsDeferred":false},{"Name":"lodash fp","Code":"_.flow(_.map(num =\u003E ({\r\n\tresult: num\r\n})), _.filter(num =\u003E num % 2 === 0))(numbers);","IsDeferred":false},{"Name":"generator, filter \u002B map","Code":"var pure = [...filter(num =\u003E num % 2 === 0, map(num =\u003E ({ result: num }), numbers))];","IsDeferred":false},{"Name":"generator, filterMap","Code":"var pure = [...filterMap(num =\u003E num % 2 === 0, num =\u003E ({ result: num }), numbers)];","IsDeferred":false},{"Name":"pure js, reversed","Code":"var pure = numbers.map(num=\u003E ({ result: num })).filter(({result}) =\u003E result % 2 === 0);","IsDeferred":false}]}