{"ScriptPreparationCode":"// Sample data\r\nconst data = Array.from({ length: 5 }, (_, i) =\u003E ({ value: i % 100 }));\r\n\r\nconst sumBy = (fn, arr) =\u003E\r\n arr.reduce((acc, curr) =\u003E acc \u002B fn(curr), 0);\r\nconst avgBy = (fn, arr) =\u003E sumBy(fn, arr) / arr.length;\r\n\r\n// 1. Lodash\r\nfunction lodashMeanBy(array, fn) {\r\n return _.meanBy(array, fn);\r\n}\r\n\r\n// 2. Reduce\r\nfunction reduceMeanBy(array, fn) {\r\n const sum = array.reduce((acc, obj) =\u003E acc \u002B fn(obj), 0);\r\n return sum / array.length;\r\n}\r\n\r\n// 3. For loop\r\nfunction forLoopMeanBy(array, fn) {\r\n let sum = 0;\r\n for (let i = 0; i \u003C array.length; i\u002B\u002B) {\r\n sum \u002B= fn(array[i]);\r\n }\r\n return sum / array.length;\r\n}\r\n\r\n// 4. For...of\r\nfunction forOfMeanBy(array, fn) {\r\n let sum = 0;\r\n for (const item of array) {\r\n sum \u002B= fn(item);\r\n }\r\n return sum / array.length;\r\n}\r\n\r\n// 5. While loop\r\nfunction whileMeanBy(array, fn) {\r\n let sum = 0;\r\n let i = 0;\r\n const len = array.length;\r\n while (i \u003C len) {\r\n sum \u002B= fn(array[i\u002B\u002B]);\r\n }\r\n return sum / len;\r\n}\r\n\r\n// 6. forEach\r\nfunction forEachMeanBy(array, fn) {\r\n let sum = 0;\r\n array.forEach(item =\u003E {\r\n sum \u002B= fn(item);\r\n });\r\n return sum / array.length;\r\n}\r\n\r\nconst accessor = obj =\u003E obj.value;\r\n","TestCases":[{"Name":"reduceMeanBy","Code":"reduceMeanBy(data, accessor)","IsDeferred":false},{"Name":"lodashMeanBy","Code":"lodashMeanBy(data, accessor)","IsDeferred":false},{"Name":"forLoopMeanBy","Code":"forLoopMeanBy(data, accessor)","IsDeferred":false},{"Name":"forOfMeanBy","Code":"forOfMeanBy(data, accessor)","IsDeferred":false},{"Name":"whileMeanBy","Code":"whileMeanBy(data, accessor)","IsDeferred":false},{"Name":"forEachMeanBy","Code":"forEachMeanBy(data, accessor)","IsDeferred":false},{"Name":"current","Code":"avgBy(accessor, data)","IsDeferred":false}]}