{"ScriptPreparationCode":"var data = [{\r\n name: \u0027pi\u0027,\r\n value: 3.14\r\n },\r\n {\r\n name: \u0027hundred\u0027,\r\n value: 100\r\n },\r\n {\r\n name: \u0027truthy\u0027,\r\n value: true\r\n },\r\n {\r\n name: \u0027falsy\u0027,\r\n value: false\r\n },\r\n {\r\n name: \u0027estring\u0027,\r\n value: \u00272.71828\u0027\r\n },\r\n];\r\n\r\nvar keyBy = (array, fn) =\u003E {\r\n return array.reduce((acc, value) =\u003E {\r\n acc[fn(value)] = value;\r\n return acc;\r\n }, {});\r\n};\r\n\r\nvar keyBySpread = (array, fn) =\u003E {\r\n return array.reduce((acc, value) =\u003E ({\r\n ...acc,\r\n [fn(value)]: value\r\n }), {});\r\n};\r\n\r\nvar keyByForEach = (array, fn) =\u003E {\r\n var acc = {};\r\n _.forEach(array, (value) =\u003E {\r\n acc[fn(value)] = value;\r\n });\r\n return acc;\r\n};\r\n\r\nvar keyByForLoop = (array, fn) =\u003E {\r\n var acc = {};\r\n for (let i = 0; i \u003C array.length; i\u002B\u002B) {\r\n acc[fn(array[i])] = array[i];\r\n }\r\n return acc;\r\n};","TestCases":[{"Name":"lodash/keyBy","Code":"_.keyBy(data, (v) =\u003E v.name);","IsDeferred":false},{"Name":"keyBy with native reduce","Code":"keyBy(data, (v) =\u003E v.name);","IsDeferred":false},{"Name":"keyBy with forEach","Code":"keyByForEach(data, (v) =\u003E v.name);","IsDeferred":false},{"Name":"keyBy with for loop","Code":"keyByForLoop(data, (v) =\u003E v.name);","IsDeferred":false},{"Name":"KeyBy with spread operator","Code":"keyBySpread(data, (v) =\u003E v.name);","IsDeferred":false}]}