tengo una matriz:
const arr = [ { name: "Jeff", id: 1 }, { name: "Mary", id: 2 }, { name: "Jeff", id: 3 }, { name: "Mary", id: 4 }, { name: "Emile", id: 5 }, ];Quiero convertirlo en esto:
const obj = { Jeff: [1, 3], Mary: [2, 4], Emile: [5], }; Intenté usar el método Array.reduce , pero parece que no puedo entender la lógica.
const obj = arr.reduce((acc, info) => { acc[info[name]] = .... return acc; }, {});Supongo que se puede hacer con el método reduce
Está en el camino correcto, solo necesita verificar si la matriz está allí.
const arr = [ { name: "Jeff", id: 1 }, { name: "Mary", id: 2 }, { name: "Jeff", id: 3 }, { name: "Mary", id: 4 }, { name: "Emile", id: 5 }, ]; const result = arr.reduce((acc, { name, id }) => { acc[name] = acc[name] || []; // or if(!acc[name]) acc[name] = []; acc[name].push(id); return acc; }, {}); console.log(result);Puedes hacer esto:
const arr = [ { name: "Jeff", id: 1 }, { name: "Mary", id: 2 }, { name: "Jeff", id: 3 }, { name: "Mary", id: 4 }, { name: "Emile", id: 5 }, ]; const result = arr.reduce( (acc, cur) => ((acc[cur.name] || (acc[cur.name] = [])).push(cur.id), acc), {} ); console.log(result);