Esta es la matriz de objetos javascript. Quiero que estos objetos javascript se fusionen en un solo objeto javascript de acuerdo con su mismo valor de propiedad.
Esta es la matriz original:
const array = [ {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Education: {…}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Skills: {…}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Total: {…}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Personal: {…}}, {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Ethics: {…}}, {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Total: {…}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Total: {…}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Skills: {…}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Personal: {…}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Education: {…}}, ]Esta es la matriz requerida:
const array = [ {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Education: {…}, Skills: {…}, Total: {…}, Personal: {…}}, {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Ethics: {…}, Total: {…}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Total: {…}, Skills: {…}, Personal: {…}, Education: {…}}, ]Al igual que el correo electrónico, el nombre y la función, los tres tienen la misma propiedad y el mismo valor de propiedad. Se fusionaría en un objeto javascript y los demás permanecerían igual. Proporcione amablemente la solución en React.js/Javascript . Gracias
Un buen caso para aplicar el método reduce, prueba este código:
const array = [ {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Education: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Skills: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Total: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Personal: {}}, {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Ethics: {}}, {email: 'tayyab@endtest-mail.io', name: 'Tayyab', role: 'Lead', Total: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Total: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Skills: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Personal: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Education: {}}, ] let result = Object.values(array.reduce((acc, {name, ...rest}) => { acc[name] = {...acc[name], ...{name, ...rest}}; return acc; }, {})); console.log(result);Usando reduce y Object.values
const array = [ {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Education: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Skills: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Total: {}}, {email: 'jon@endtest-mail.io', name: 'Jon', role: 'Player', Personal: {}}, {email: 'tayyab.ejaz@endtest-mail.io', name: 'Tayyab', role: 'Lead', Ethics: {}}, {email: 'tayyab.ejaz@endtest-mail.io', name: 'Tayyab', role: 'Lead', Total: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Total: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Skills: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Personal: {}}, {email: 'arya@endtest-mail.io', name: 'Arya', role: 'Banker', Education: {}}, ] const result = Object.values(array.reduce((acc, item) => { // build key with unique props const key = [item.email, item.name, item.role].join("-"); // assign properties to a new object // if object does not exist with the key it uses empty object acc[key] = {...(acc[key] || {}), ...item}; return acc; }, {})); console.log(result);