{"ScriptPreparationCode":"const max2 = 500000;\r\nvar rows = [];\r\n\r\nfor (let i = 0; i \u003C= max2; i\u002B\u002B) { // Use \u0060let\u0060 for \u0060i\u0060 as it\u2019s updated in each loop iteration\r\n rows.push({\r\n id: i,\r\n task_id: i % 1000,\r\n name: \u0060Task ${i}\u0060,\r\n status: i % 2 === 0 ? \u0027active\u0027 : \u0027inactive\u0027,\r\n description: \u0060Description for task ${i}\u0060,\r\n priority: Math.floor(Math.random() * 5) \u002B 1\r\n });\r\n}\r\n","TestCases":[{"Name":"Lodash with _.mapValues and _.omit","Code":"const lodashMapValuesOmitGrouped = _.mapValues(_.groupBy(rows, \u0027task_id\u0027), group =\u003E\r\n group.map(row =\u003E _.omit(row, \u0027task_id\u0027))\r\n);\r\n","IsDeferred":false},{"Name":"Native reduce Grouping with Destructuring","Code":"const nativeReduceGrouped = rows.reduce((acc, row) =\u003E {\r\n const { task_id, ...rest } = row; // Exclude \u0060task_id\u0060 using destructuring\r\n if (!acc[task_id]) acc[task_id] = []; // Initialize array for this \u0060task_id\u0060\r\n acc[task_id].push(rest); // Add the item without \u0060task_id\u0060 to the group\r\n return acc;\r\n}, {});\r\n","IsDeferred":false},{"Name":"Custom reduce with Object.keys Filtering","Code":"const customReduceGrouped = rows.reduce((acc, row) =\u003E {\r\n if (!acc[row.id]) acc[row.id] = []; // Initialize an array for each unique id\r\n const rowData = Object.keys(row).reduce((obj, key) =\u003E {\r\n if (key !== \u0027id\u0027) obj[key] = row[key]; // Exclude \u0027id\u0027 to avoid nesting\r\n return obj;\r\n }, {});\r\n acc[row.id].push(rowData);\r\n return acc;\r\n}, {});\r\n","IsDeferred":false},{"Name":"Lodash Grouping with Native Key Removal","Code":"const lodashGroupedWithDelete = _.groupBy(rows, \u0027task_id\u0027);\r\n\r\nObject.values(lodashGroupedWithDelete).forEach(group =\u003E {\r\n group.forEach(item =\u003E {\r\n delete item.task_id; // Remove \u0060task_id\u0060 directly from each item\r\n });\r\n});\r\n","IsDeferred":false}]}