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

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); 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)