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

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

Linda Hamilton
リリース: 2024-12-17 07:41:24
オリジナル
432 人が閲覧しました

How to 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:&quot;Mon Sep 23 2013 00:00:00 GMT-0400&quot;, val:54} // <- duplicate key
]
ログイン後にコピー

私たちの目標は配列を取得することです次のような一意のキーと合計値を使用します。

reducedObjArr = [
    {key:&quot;Mon Sep 23 2013 00:00:00 GMT-0400&quot;, val:96},
    {key:&quot;Mon Sep 24 2013 00:00:00 GMT-0400&quot;, val:78},
    {key:&quot;Mon Sep 25 2013 00:00:00 GMT-0400&quot;, 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート