やりたいこと
以下のデータを 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);