{"ScriptPreparationCode":"var testCopy = null;\r\nvar responsibleRoleId = \u00275f5d7d26-8551-439f-9c90-3f8e4c52ce8b\u0027;\r\nvar testArray = [{\r\n id: \u0027ItemWith Owner 1\u0027,\r\n name: \u0027Item With Owner 1\u0027,\r\n membershipRoleId: \u00275f5d7d26-8551-439f-9c90-3f8e4c52ce8b\u0027\r\n}, {\r\n id: \u0027ItemWith Owner 2\u0027,\r\n name: \u0027Item With Owner 2\u0027,\r\n membershipRoleId: null\r\n}, {\r\n id: \u0027ItemWith Owner 2\u0027,\r\n name: \u0027Item With Owner 2\u0027,\r\n membershipRoleId: \u00275f5d7d26-8551-439f-9c90-3f8e4c52ce8b\u0027\r\n}, {\r\n id: \u0027ItemWith Owner 3\u0027,\r\n name: \u0027Item With Owner 3\u0027,\r\n membershipRoleId: \u00275f5d7d26-8551-439f-9c90-3f8e4c52ce8b\u0027\r\n}, {\r\n id: \u0027ItemWith Owner 3\u0027,\r\n name: \u0027Item With Owner 3\u0027,\r\n membershipRoleId: \u0027b2af40ef-8c6c-44ce-b733-170489104eaa\u0027\r\n}, {\r\n id: \u0027ItemWith Owner 4\u0027,\r\n name: \u0027Item With Owner 4\u0027,\r\n membershipRoleId: null\r\n}, {\r\n id: \u0027ItemWith Owner 4\u0027,\r\n name: \u0027Item With Owner 4\u0027,\r\n membershipRoleId: \u00275f5d7d26-8551-439f-9c90-3f8e4c52ce8b\u0027\r\n}, {\r\n id: \u0027ItemWith Owner 4\u0027,\r\n name: \u0027Item With Owner 4\u0027,\r\n membershipRoleId: \u00277af6b8b7-b669-4f6a-b593-3ea7e1c6054d\u0027\r\n}, {\r\n id: \u0027ItemWith Owner 5\u0027,\r\n name: \u0027Item With Owner 5\u0027,\r\n membershipRoleId: \u00275f5d7d26-8551-439f-9c90-3f8e4c52ce8b\u0027\r\n}, {\r\n id: \u0027ItemWith Owner 6\u0027,\r\n name: \u0027Item With Owner 6\u0027,\r\n membershipRoleId: null\r\n}, {\r\n id: \u0027ItemWith Owner 6\u0027,\r\n name: \u0027Item With Owner 6\u0027,\r\n membershipRoleId: \u00275f5d7d26-8551-439f-9c90-3f8e4c52ce8b\u0027\r\n}, {\r\n id: \u0027ItemWith Owner 6\u0027,\r\n name: \u0027Item With Owner 6\u0027,\r\n membershipRoleId: \u00273b9c7a19-f047-4cb6-ba12-7b6d0bc0a686\u0027\r\n}, {\r\n id: \u0027ItemWithout Owner 1\u0027,\r\n name: \u0027Item Without Owner 1\u0027,\r\n membershipRoleId: null\r\n}, {\r\n id: \u0027ItemWithout Owner 2\u0027,\r\n name: \u0027Item Without Owner 2\u0027,\r\n membershipRoleId: \u00276fee2c1e-9892-452d-98eb-47f516a022bf\u0027\r\n}, {\r\n id: \u0027ItemWithout Owner 3\u0027,\r\n name: \u0027Item Without Owner 3\u0027,\r\n membershipRoleId: null\r\n}, {\r\n id: \u0027ItemWithout Owner 3\u0027,\r\n name: \u0027Item Without Owner 3\u0027,\r\n membershipRoleId: \u0027bf5f9c62-c412-4dcc-a1fb-afc66999387d\u0027\r\n}, {\r\n id: \u0027ItemWithout Owner 4\u0027,\r\n name: \u0027Item Without Owner 4\u0027,\r\n membershipRoleId: \u00278a13a6c3-f17c-413c-8c3d-a52264e389fd\u0027\r\n}, {\r\n id: \u0027ItemWithout Owner 4\u0027,\r\n name: \u0027Item Without Owner 4\u0027,\r\n membershipRoleId: \u002751440a3d-52a7-4f02-b583-9bc97009d1db\u0027\r\n}, {\r\n id: \u0027ItemWithout Owner 5\u0027,\r\n name: \u0027Item Without Owner 5\u0027,\r\n membershipRoleId: \u0027cc3db764-bc81-412e-a736-022f36d821a4\u0027\r\n}, {\r\n id: \u0027ItemWithout Owner 5\u0027,\r\n name: \u0027Item Without Owner 5\u0027,\r\n membershipRoleId: \u002774e9b6f9-bdfa-4432-bb5c-690a5506ac74\u0027\r\n}];","TestCases":[{"Name":"Reduce filter","Code":"testCopy = testArray.reduce((acc, v) =\u003E {\r\n\t\t\tconst existingDataIdx = acc.findIndex(i =\u003E i.id === v.id);\r\n\t\t\tif (existingDataIdx === -1) {\r\n\t\t\t\treturn [...acc, v];\r\n\t\t\t}\r\n\t\t\tif (acc[existingDataIdx].membershipRoleId !== responsibleRoleId) {\r\n\t\t\t\tacc.splice(existingDataIdx, 1, v);\r\n\t\t\t}\r\n\t\t\treturn acc;\r\n\t\t}, []);","IsDeferred":false},{"Name":"Lodash reduce filter","Code":"testCopy = _.reduce(testArray,(acc, v) =\u003E {\r\n\t\t\tconst existingDataIdx = acc.findIndex(i =\u003E i.id === v.id);\r\n\t\t\tif (existingDataIdx === -1) {\r\n\t\t\t\treturn [...acc, v];\r\n\t\t\t}\r\n\t\t\tif (acc[existingDataIdx].membershipRoleId !== responsibleRoleId) {\r\n\t\t\t\tacc.splice(existingDataIdx, 1, v);\r\n\t\t\t}\r\n\t\t\treturn acc;\r\n\t\t}, []);","IsDeferred":false},{"Name":"Lodash group and flatmap","Code":"const uniqueData = [];\r\n\t\tconst groups = _.groupBy(testArray, \u0027id\u0027);\r\n\t\t_.flatMap(groups, dataset =\u003E {\r\n\t\t\tif (dataset.length \u003E 1) {\r\n\t\t\t\tconst dataWithResponsible = dataset.find(d =\u003E d.membershipRoleId === responsibleRoleId);\r\n\t\t\t\tif (dataWithResponsible) {\r\n\t\t\t\t\tuniqueData.push(dataWithResponsible);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tuniqueData.push(dataset[0]); // the responsible values are already reset to null\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tuniqueData.push(dataset[0]); // the responsible values are already reset to null\r\n\t\t\t}\r\n\t\t});\r\n\t\ttestCopy = uniqueData;","IsDeferred":false}]}