オブジェクトの配列内の同じキーのプロパティ値の結合
以下のような JavaScript オブジェクトの配列がある場合、どのように結合できますか対応する値を合計してキーを重複させますか?
objArr = [ {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:42}, {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78}, {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23}, {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:54} // <- duplicate key ]
私たちの目標は配列を取得することです次のような一意のキーと合計値を使用します。
reducedObjArr = [ {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:96}, {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78}, {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23} ]
Map と Reduce を使用したソリューション
値を反復してプッシュする代わりに、次の強力な組み合わせを利用できます。 map とreduce:
const objArr = [ {key: 'Mon Sep 23 2013 00:00:00 GMT-0400', val: 42}, {key: 'Mon Sep 24 2013 00:00:00 GMT-0400', val: 78}, {key: 'Mon Sep 25 2013 00:00:00 GMT-0400', val: 23}, {key: 'Mon Sep 23 2013 00:00:00 GMT-0400', val: 54} // <- duplicate key ]; // Convert data into a Map with reduce const counts = objArr.reduce((prev, curr) => { const count = prev.get(curr.key) || 0; prev.set(curr.key, curr.val + count); return prev; }, new Map()); // Map counts object back to an array const reducedObjArr = [...counts].map(([key, value]) => { return {key, value} }); console.log(reducedObjArr);
このアプローチでは、同じキーを持つ値を効果的に集約して結合し、目的の縮小結果が得られます。配列。
以上がJavaScript オブジェクト配列内の重複キーの値を合計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。