JSFiddle - React, Tailwind, and code Playground

JavaScript

const array = [
  { foo: 1 },
  { bar: 2 },
  { foo: -2 },
  { foo: 3, bar: 4 }
]

// reduce内のコールバック関数の第一引数は現在の値、つまり一巡目はreduceの第二引数である初期値の0
// それにfoo(またはbar)を取り出して足していく、ただしarrayの値のオブジェクトにはfooがundefinedの場合があるので{ foo = 0 }として無かった場合のデフォルト値を設定している
const foo = array.reduce((acc, { foo = 0 }) => acc + foo, 0)
const bar = array.reduce((acc, { bar = 0 }) => acc + bar, 0)

console.log(foo)
console.log(bar)