我想按id
和name
var arr = [
{
id: 'A1',
name: 'andersson'
},
{
id: 'A1',
name: 'johansson'
},
{
id: 'A1',
name: 'andersson'
},
];
预期产出:
var aggregated = [
{
id: 'A1',
name: 'andersson',
count: 2
},
{
id: 'A1',
name: 'johansson',
count: 1
}
];
这应该是一项基本任务,但我找不到任何方便的方法来使用下划线。应该以某种方式使用_.groupBy
函数。
我的数据集很大,因此性能非常重要。
答案 0 :(得分:1)
您可以先groupBy
ID并计算,然后使用map
计算每个值。
var arr = [{
id: 'A1',
name: 'andersson'
}, {
id: 'A1',
name: 'johansson'
}, {
id: 'A1',
name: 'andersson'
}];
var result = _.chain(arr)
.groupBy(e => e.id + '|' + e.name)
.map(e => (e[0].count = e.length, e[0]))
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>