JavaScript
lodash

lodash で groupBy を複数の値でしたい

やりたいこと

以下のデータを id,name の二つの項目の組み合わせで groupBy したい

const data = [
  { id: '111', name: 'A', score: 100 },
  { id: '111', name: 'B', score: 50 },
  { id: '222', name: 'C', score: 100 },
  { id: '222', name: 'C', score: 50 },
  { id: '222', name: 'D', score: 70 }
];

こんな形にしたい

[
  { id: '111', name: 'A', sum: 100 },
  { id: '111', name: 'B', sum: 50 },
  { id: '222', name: 'C', sum: 150 },
  { id: '222', name: 'D', sum: 70 }
];

コード

実際できたコードはこちら

const _ = require('lodash');

const data = [
  { id: '111', name: 'A', score: 100 },
  { id: '111', name: 'B', score: 50 },
  { id: '222', name: 'C', score: 100 },
  { id: '222', name: 'C', score: 50 },
  { id: '222', name: 'D', score: 70 }
];

const groups = _.groupBy(data, value => {
  return value.id + '#' + value.name;
});

const result = _.map(groups, group => {
  return {
    id: group[0].id,
    name: group[0].name,
    sum: _.sumBy(group, 'score')
  };
});

console.table(result);