Tengo una matriz de objetos y necesito devolver un objeto donde su clave es el tipo de mascota y su valor es una matriz con los nombres de las mascotas. pero no puedo crear la matriz de los nombres.
let pets=[ {name:'kity', edad:10,type:'cat'}, {name:'saske', edad:10,type:'dog'}, {name:'naruto', edad:10,type:'dog'}, {name:'goku', edad:10,type:'cat'}, {name:'flofy', edad:10,type:'dog'}, {name:'flufin', edad:10,type:'cat'}, {name:'honey', edad:10,type:'bird'}, {name:'silvestre', edad:10,type:'cat'}, {name:'taz', edad:10,type:'dog'}, {name:'piolin', edad:10,type:'bird'}, {name:'gogeta', edad:10,type:'dog'}, ] const reduced = pets.reduce((acc, {name,type}) => ({ ...acc, [`Type${type}`]: acc[...name] }), {});esperado
reduce ={ Typecat:['kity','goku','flufin','silvestre'], Typedog:['saske','naruto','flofy','taz','gogeta'], Typebird:['honey','piolin'] }Puedes hacerlo:
let pets=[ {name:'kity', edad:10,type:'cat'}, {name:'saske', edad:10,type:'dog'}, {name:'naruto', edad:10,type:'dog'}, {name:'goku', edad:10,type:'cat'}, {name:'flofy', edad:10,type:''}, {name:'flufin', edad:10,type:'cat'}, {name:'honey', edad:10,type:'bird'}, {name:'silvestre', edad:10,type:'cat'}, {name:'taz', edad:10,type:'dog'}, {name:'piolin', edad:10,type:'bird'}, {name:'gogeta', edad:10,type:'dog'}, ]; const result = pets.reduce((acc, item) => { if(acc[`Type${item.type}`]) { acc[`Type${item.type}`].push(item.name); } else { acc[`Type${item.type}`] = [item.name]; } return acc; }, {}); console.log(result);Lo que puedes hacer es:
const result = pets.reduce((acc, item) => { const values = acc[item.type] ? acc[item.type].concat(item.name) : [item.name] return { ...acc, [item.type]: values } }, {});