ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクト配列内の重複キーの値を効率的に合計するにはどうすればよいですか?

JavaScript オブジェクト配列内の重複キーの値を効率的に合計するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 01:32:091003ブラウズ

How to Efficiently Sum Values of Duplicate Keys in a JavaScript Array of Objects?

オブジェクトの配列内の重複キーの値を合計する

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。