我做了一个小的plnkr here来展示我想要实现的目标。我有一个很大的数据集,我喜欢对单个类型进行求和,从而得到一个总数。
我可以考虑迭代并将结果添加到对象散列中,但我想知道使用下划线解决它的更优雅的方法。我正在使用underscore.js,但从未尝试过map reduce或其他函数范式。请更新plnkr以了解如何执行此操作。
http://plnkr.co/edit/B5HGxhwvWsfvOR97z7TL?p=preview
var data = [ {'type': "A", 'val':2},
{'type': "B", 'val':3},
{'type': "A", 'val':1},
{'type': "C", 'val':5} ];
_.each(data, function (elm, index) {
console.log(elm);
});
/*
Desired output
out = [ {'type': "A", 'total':3},
{'type': "B", 'total':3},
{'type': "C", 'total':5} ];
*/
发布于 2013-01-21 07:31:48
var data = [ { type: "A", val: 2 },
{ type: "B", val: 3 },
{ type: "A", val: 1 },
{ type: "C", val: 5 } ];
var groups = _(data).groupBy('type');
var out = _(groups).map(function(g, key) {
return { type: key,
val: _(g).reduce(function(m,x) { return m + x.val; }, 0) };
});
发布于 2013-01-21 07:35:15
答案和@GregL差不多,只是加了一点下划线:
summed_by_type = _(data).reduce(function(mem, d) {
mem[d.type] = (mem[d.type] || 0) + d.val
return mem
}, {})
pairs = _(summed_by_type).map(function(v,k) { return {type: k, total: v} })
https://stackoverflow.com/questions/14430321
复制相似问题