lodash で groupBy を複数の値でしたい
lodash で groupBy を複数の値でしたい:
以下のデータを id,name の二つの項目の組み合わせで 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);
コメント
コメントを投稿