Debería ser una tarea sencilla, pero estoy teniendo un pequeño problema.
haciéndolo.
Tengo el siguiente objeto:
{ "chatRoom": [ { "_count": { "publicMessages": 10 } }, { "_count": { "publicMessages": 10 } }, { "_count": { "publicMessages": 10 } } ], } Me gustaría obtener la suma total de cada valor.
dentro de "mensajespublicos"
La salida deseada:
{ "totalMessages": 30 }Puede usar la función Array.reduce() . Si ese objeto está dentro de una variable llamada obj , puede lograrlo usando:
const result = { totalMessages: obj.chatRoom.reduce((acc, cur) => acc + cur._count.publicMessages, 0) };Si desea algo un poco más detallado y comprensible que reduce , un ciclo for/of simple podría ayudarlo.
const data={chatRoom:[{_count:{publicMessages:10}},{_count:{publicMessages:10}},{_count:{publicMessages:10}}]}; // Initialise the total let totalMessages = 0; // Loop over the chatRoom array of objects // and add the publicMessages value to the total for (const obj of data.chatRoom) { totalMessages += obj._count.publicMessages; } // Log the total console.log({ totalMessages });Array.reduce() es la solución, puede ejecutarlo así:
const obj={chatRoom:[{_count:{publicMessages:10}},{_count:{publicMessages:10}},{_count:{publicMessages:10}}]}; let sum = obj.chatRoom.reduce( (acc, curr)=>{ return acc+=curr._count.publicMessages??0},0); console.log(sum);