オブジェクトの配列が与えられたときにキーごとの合計値をもつオブジェクトを作る(javascriptの)コードを回答します。
たとえば配列 ary
が以下のようなものだったとします。
javascript
1[
2 { a: 1, b: 2, c: 3 },
3 { b: 1, d: 2 },
4 { a: 2, c: 1, e: 4 }
5]
このときに、以下のようなオブジェクト total
javascript
1{ a: 3, b: 3, c: 4, d: 2, e: 4 }
を得るにはたとえば以下のようにします。
javascript
1const total = ary.reduce(
2 (s1, e) => Object.entries(e).reduce(
3 (s2, [k, v]) => ({
4 ...s2,
5 [k]: (s2[k] || 0) + v
6 }),
7 s1
8 ), {}
9);
質問にあるコードに上記を使おうとすれば、まずはmealData
の各要素の ingredience
を要素とする配列を作ってそれに上記のコードを適用するとよいでしょう。
追記
lodashの _.mergeWith を使うと、以下によってary
からtotal
を得られます。
javascript
1const total = ary.reduce((s, e) => _.mergeWith(s, e, (x=0, y) => x + y), {});
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/04 00:45