Me gustaría obtener los valores de suma de cada una de las propiedades.
const dataArr = [ { prop1 : 1, prop2 : 10, prop3 : 100 }, { prop1 : 2, prop2 : 20, prop3 : 200 }, { prop1 : 3, prop2 : 30, prop3 : 300 }, ] const result = dataArr.reduce( ( acc, curr ) => { return { prop1 : acc + curr.prop1, prop2 : acc + curr.prop2, prop3 : acc + curr.prop3 } },0) console.log(result) // expected { prop1 : 6, prop2 : 60, prop3 : 600 } // but got { prop1 : 3, prop2 : 30, prop3 : 300 }Entonces, intenté reducir así, pero no funcionó. ¿Cómo puedo arreglarlo?
const dataArr = [ { prop1 : 1, prop2 : 10, prop3 : 100 }, { prop1 : 2, prop2 : 20, prop3 : 200 }, { prop1 : 3, prop2 : 30, prop3 : 300 }, ]; let sum = dataArr.reduce((a,b)=>({ prop1: a.prop1+b.prop1, prop2: a.prop2+b.prop2, prop3: a.prop3+b.prop3,})); console.log(sum);Si tiene un número desconocido de propiedades, puede usar una reducción anidada:
const dataArr = [{ prop1: 1, prop2: 10, prop3: 100 }, { prop1: 2, prop2: 20, prop3: 200 }, { prop1: 3, prop2: 30, prop3: 300 }, ] const result = dataArr.reduce((acc, curr) => { return Object.entries(curr).reduce((iAcc, [k, v]) => { iAcc[k] = (iAcc[k] ?? 0) + v; return iAcc; }, acc) }) console.log(result)Esto también funciona si faltan propiedades en algunos elementos.