由此:
var x = [
{category: 'Title', price: 100 },
{category: 'Title', price: 200 },
{category: 'Title3', price: 300 },
{category: 'Title3', price: 400 },
{category: 'Title5', price: 500 },
];
对此:
var x = [
{category: 'Title', price: 300},
{category: 'Title3', price: 700},
{category: 'Title5', price: 500},
];
逻辑与SQL查询相同:
SELECT category, sum (price) FROM x GROUP BY category;
答案 0 :(得分:2)
更新:
groupBy
会将初始数组按"类别"。map
将通过传递两个参数(key
和value
来迭代分组数组中的每个对象。第一个key
将是"标题"其value
是[{category: 'Title', price: 100 }, {category: 'Title', price: 200 }]
。map
中返回更新的数组之前,reduce
用于总结"价格"。基本上,它遍历数组(第一个参数)并从函数(第二个参数)返回总和。请注意,在第一次迭代中,total
将为0
(reduce
中的最后一个参数)。因此,第一次返回将是0 + 100
,然后将其作为' new'在第二次迭代中total
,依此类推。您可以参考documentation了解更多详情。
试试这个:
var groups = _.groupBy(x, 'category');
var result = _.map(groups, function(value, key) {
return {
category: key,
price: _.reduce(value, function(total, o) {
return total + o.price;
}, 0)
};
});