2つ以上のキー値が同じである場合に、辞書のリスト内の要素を合計する方法

al27

私は次の辞書の配列を持っています:

[{name:'g1', variant:'v1', count:1},{name:'g2', variant:'v1', count:2}, {name:'g1', variant:'v1', count:2}, {name:'g2', variant:'v1', count:2}]

配列が指定された辞書の新しいリストを作成したいので['name', 'variant']、2つの辞書が配列で指定されたキーの値が同じである場合、対応するカウントは次のように合計されます。

[{name:'g1', variant:'v1', count:3},{name:'g2', variant:'v1', count:4}]

Javascriptでこれを実現するにはどうすればよいですか?

ステップアップ

reduceメソッドを使用してグループ化し、合計することができますcount

const result = arr.reduce((a, {name, variant, count}) => {
  a[name] = a[name] || {name, variant, count: 0};
  a[name].count += count;
  return a;
}, {})

例:

let arr = [
  {name:'g1', variant:'v1', count:1},
  {name:'g2', variant:'v1', count:2}, 
  {name:'g1', variant:'v1', count:2}, 
  {name:'g2', variant:'v1', count:2}
];   

const result = arr.reduce((a, {name, variant, count}) => {
  a[name] = a[name] || {name, variant, count: 0};
  a[name].count += count;
  return a;
}, {})

console.log(Object.values(result))

更新:

nameなどの複数のプロパティでグループ化する場合はvariant、次を使用できます。

const result = [...arr.reduce((r, o) => {

  const key = o.name + '-' + o.variant;

  const item = r.get(key) || Object.assign({}, o, {
    count: 0
  });

  item.count += +o.count;

  return r.set(key, item);
}, new Map).values()];

例:

let arr = [
  {name:'g1', variant:'v1', count:1},
  {name:'g2', variant:'v1', count:2},
  {name:'g1', variant:'v1', count:2},
  {name:'g2', variant:'v1', count:2}
];


const result = [...arr.reduce((r, o) => {

  const key = o.name + '-' + o.variant;

  const item = r.get(key) || Object.assign({}, o, {
    count: 0
  });

  item.count += +o.count;

  return r.set(key, item);
}, new Map).values()];

console.log(result);

キーをハードコーディングしない場合:

let firstKey = 'name', secondKey = 'variant', thirdKey = 'count';

const result = [...arr.reduce((r, o) => {

  const key = o[firstKey] + '-' + o[secondKey];

  const item = r.get(key) || Object.assign({}, o, {
    [thirdKey]: 0
  });

  item[thirdKey] += +o[thirdKey];

  return r.set(key, item);
}, new Map).values()];

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つのキー値が同じである場合に辞書のリストの要素を合計する方法

分類Dev

2つのリスト内で同じキーを持つ辞書の値を合計するにはどうすればよいですか?

分類Dev

両方が同じである場合にリスト内の2つの要素を置き換える方法(Python)

分類Dev

キーが特定の値である場合に、辞書のリスト内のキーと値のペアでのみ値を抽出する方法

分類Dev

キーが値と同じである場合に辞書の値をNoneに変更する方法

分類Dev

値がPythonの値のリストである場合に辞書キーを取得する方法

分類Dev

zip()の使用2つのリストをappandmultipal値の同じキーを持つ辞書に結合する

分類Dev

辞書のリストで2つの同じ値を同じキーと組み合わせる

分類Dev

python-1つのキーに1つ以上の値がある場合に辞書の値を繰り返す

分類Dev

リスト内の同じキーで辞書の値を合計するにはどうすればよいですか?

分類Dev

重複が存在する場合、2つの要素のリストを辞書に変換する方法(1つの要素がキーになり、もう1つの要素が値になります)?

分類Dev

値が同じである場合、配列によって形成される辞書の要素を削除します

分類Dev

特定のキー項目が辞書にある場合にリスト内の辞書のインデックスを取得する方法

分類Dev

2つ以上の辞書を同じキーで組み合わせる

分類Dev

キーに値のリストがある場合に複数の辞書をマージするPython

分類Dev

1つが複数のリストを持つタプルである場合、2つのリストを辞書に結合する方法…

分類Dev

Pythonでキーに2つの値が必要な場合に、2つのリストを含む辞書を作成する

分類Dev

他の2つのキーと値のペアが一致する場合、辞書のリストのPython合計値

分類Dev

Pythonのリスト形式の値の場合、辞書内の値を合計する方法

分類Dev

キーは同じであるが、値のタプルの変数リストを持つ2つの辞書の値を追加します

分類Dev

繰り返しキーが存在する場合の辞書の値である結合リスト

分類Dev

繰り返しキーが存在する場合の辞書の値である結合リスト

分類Dev

各辞書に異なるキーがある場合、辞書のリストを値で並べ替える方法は?

分類Dev

Pythonの2つのネストされた辞書内の類似したキーの値を合計する

分類Dev

同じキーの辞書に値として2つのリストを挿入する方法

分類Dev

PHPで同じキーを持つ2つ以上の多次元配列の要素の合計を取得する

分類Dev

キーが辞書のリストで同じである場合、ネストされたJSONをマージします

分類Dev

値がC#のオブジェクトのリストである場合、辞書のキーを見つける方法は?

分類Dev

2つの辞書に重複するキーがある場合は、リストから辞書を削除します

Related 関連記事

  1. 1

    2つのキー値が同じである場合に辞書のリストの要素を合計する方法

  2. 2

    2つのリスト内で同じキーを持つ辞書の値を合計するにはどうすればよいですか?

  3. 3

    両方が同じである場合にリスト内の2つの要素を置き換える方法(Python)

  4. 4

    キーが特定の値である場合に、辞書のリスト内のキーと値のペアでのみ値を抽出する方法

  5. 5

    キーが値と同じである場合に辞書の値をNoneに変更する方法

  6. 6

    値がPythonの値のリストである場合に辞書キーを取得する方法

  7. 7

    zip()の使用2つのリストをappandmultipal値の同じキーを持つ辞書に結合する

  8. 8

    辞書のリストで2つの同じ値を同じキーと組み合わせる

  9. 9

    python-1つのキーに1つ以上の値がある場合に辞書の値を繰り返す

  10. 10

    リスト内の同じキーで辞書の値を合計するにはどうすればよいですか?

  11. 11

    重複が存在する場合、2つの要素のリストを辞書に変換する方法(1つの要素がキーになり、もう1つの要素が値になります)?

  12. 12

    値が同じである場合、配列によって形成される辞書の要素を削除します

  13. 13

    特定のキー項目が辞書にある場合にリスト内の辞書のインデックスを取得する方法

  14. 14

    2つ以上の辞書を同じキーで組み合わせる

  15. 15

    キーに値のリストがある場合に複数の辞書をマージするPython

  16. 16

    1つが複数のリストを持つタプルである場合、2つのリストを辞書に結合する方法…

  17. 17

    Pythonでキーに2つの値が必要な場合に、2つのリストを含む辞書を作成する

  18. 18

    他の2つのキーと値のペアが一致する場合、辞書のリストのPython合計値

  19. 19

    Pythonのリスト形式の値の場合、辞書内の値を合計する方法

  20. 20

    キーは同じであるが、値のタプルの変数リストを持つ2つの辞書の値を追加します

  21. 21

    繰り返しキーが存在する場合の辞書の値である結合リスト

  22. 22

    繰り返しキーが存在する場合の辞書の値である結合リスト

  23. 23

    各辞書に異なるキーがある場合、辞書のリストを値で並べ替える方法は?

  24. 24

    Pythonの2つのネストされた辞書内の類似したキーの値を合計する

  25. 25

    同じキーの辞書に値として2つのリストを挿入する方法

  26. 26

    PHPで同じキーを持つ2つ以上の多次元配列の要素の合計を取得する

  27. 27

    キーが辞書のリストで同じである場合、ネストされたJSONをマージします

  28. 28

    値がC#のオブジェクトのリストである場合、辞書のキーを見つける方法は?

  29. 29

    2つの辞書に重複するキーがある場合は、リストから辞書を削除します

ホットタグ

アーカイブ