ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクト配列内の重複キーの値を効率的に合計するにはどうすればよいですか?
オブジェクトの配列内の重複キーの値を合計する
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 を利用します。
let counts = objArr.reduce((prev, curr) => { let count = prev.get(curr.key) || 0; prev.set(curr.key, curr.val + count); return prev; }, new Map());
これにより、キーをオブジェクト キーとして、値を合計値として持つマップが作成されます。最後に、マップは次の配列に変換されます。
let reducedObjArr = [...counts].map(([_, value]) => { return {key, value} })
このアプローチはより簡潔であり、手動の反復に伴うエラーのリスクが排除されます。
以上がJavaScript オブジェクト配列内の重複キーの値を効率的に合計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。