Tengo una variedad de objetos. Cada objeto tiene una propiedad de "etiqueta" con una lista de matriz. Los valores de esta lista se repiten de un objeto a otro. Me gustaría resumir el "costo" y los "ingresos" en función de las matrices de "etiquetas". No estoy seguro de que la explicación tenga sentido, pero tengo la estructura de datos a continuación.
Cómo quiero que se vean los datos:
const expected = [ { cost: 500, revenue: 800, tag: 'new' } , { cost: 800, revenue: 1400, tag: 'equipment' } , { cost: 1300, revenue: 1650, tag: 'wholesale' } , { cost: 300, revenue: 600, tag: 'old' } ]cómo se ven los datos:
const data = [ { cost: 500, revenue: 800, tag: [ 'new', 'equipment', 'wholesale' ]} , { cost: 300, revenue: 600, tag: [ 'old', 'equipment' ]} , { cost: 800, revenue: 850, tag: [ 'wholesale' ]} ]A reduce y forEach para agrupar por etiqueta y luego tomar los valores para cada etiqueta
var a= [ { "cost": 500, "revenue": 800, "tag": [ "new", "equipment", "wholesale" ] }, { "cost": 300, "revenue": 600, "tag": [ "old", "equipment" ] }, { "cost": 800, "revenue": 850, "tag": [ "wholesale" ] } ] let x = Object.values(a.reduce((acc,{cost,revenue,tag})=>{ tag.forEach((t) => { if(!acc[t])acc[t]={tag:t,cost:0,revenue:0} acc[t].revenue+=revenue acc[t].cost+=cost }) return acc; },{})) console.log(x)