{"ScriptPreparationCode":"var array = [\r\n {\r\n name: \u0022Jules\u0022,\r\n age: 2,\r\n famille: \u0022adam\u0022\r\n },\r\n {\r\n name: \u0022John\u0022,\r\n famille: \u0022dupont\u0022\r\n },\r\n {\r\n name: \u0022Julie\u0022,\r\n famille: \u0022dupont\u0022\r\n },\r\n {\r\n name: \u0022Juliette\u0022\r\n }\r\n];","TestCases":[{"Name":"reduce and map","Code":"const result = Object.values(\r\n array.reduce((acc, obj) =\u003E {\r\n if (obj.hasOwnProperty(\u0022famille\u0022)) {\r\n if (!acc.hasOwnProperty(obj.famille)) {\r\n acc[obj.famille] = { prenom: [], famille: obj.famille };\r\n }\r\n\r\n acc[obj.famille].prenom.push(obj.name);\r\n }\r\n\r\n return acc;\r\n }, {})\r\n).map((group) =\u003E {\r\n return { prenom: group.prenom, famille: group.famille };\r\n});\r\n\r\nconsole.log(result);","IsDeferred":false},{"Name":"reduce and findIndex","Code":"const result = array.reduce((acc, curr) =\u003E {\r\n let index = acc.findIndex((item) =\u003E item.famille === curr.famille);\r\n if (index !== -1) {\r\n acc[index].prenom.push(curr.name);\r\n } else {\r\n acc.push({\r\n prenom: [curr.name],\r\n famille: curr.famille\r\n });\r\n }\r\n return acc;\r\n}, []);\r\n\r\nconsole.log(result);","IsDeferred":false}]}