如何使用下划线来获取groupBy category和平均值?
我有一系列的对象。它应该按category分组,Analytics的平均值是根据val属性(即1+2 => 3.3/类别总数)计算的。所以,3/2 => 1.5
预期产出:{ Analytics: 1.5 }
[{
area:"Digital",
category:"Analytics",
qId:"wRHmpHHGzrYLsCEJ3",
type:"Reorganize",
userId:"M4JEJGiPZ8e9om9A",
val:1
},
{
area:"Digital",
category:"Analytics",
qId:"wRHmpHHGzrYLsCEJ3",
type:"Reorganize",
userId:"M4JEJGiPZ8e9om9A",
val:2
}]谢谢
发布于 2016-08-21 13:15:17
你可以按类别将对象分组,然后是迭代此结果对象中的所有键。和减值
var types = _.groupBy(array, 'category');
var result = _.mapObject(types, function(val, key) {
return _.reduce(val, function(memo, v) {
return memo + v.val;
}, 0) / val.length;
});
var array = [{
area:"Digital",
category:"Analytics",
qId:"wRHmpHHGzrYLsCEJ3",
type:"Reorganize",
userId:"M4JEJGiPZ8e9om9A",
val:1
},
{
area:"Digital",
category:"Analytics",
qId:"wRHmpHHGzrYLsCEJ3",
type:"Reorganize",
userId:"M4JEJGiPZ8e9om9A",
val:2
}];
var types = _.groupBy(array, 'category');
var result = _.mapObject(types, function(val, key) {
return _.reduce(val, function(memo, v) {
return memo + v.val;
}, 0) / val.length;
});
console.log(result);<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
https://stackoverflow.com/questions/39064019
复制相似问题