我想使用lodash
减少我的对象数组。
我的对象:
[
{date: '01/01/2016', price: 5},
{date: '01/01/2016', price: 10},
{date: '01/02/2016', price: 500}
]
减少之后:
[
{date: '01/01/2016', price: 15},
{date: '01/02/2016', price: 500}
]
主要目标是检查是否有相同的日期并将价格累积到一个简单的对象中......
答案 0 :(得分:5)
使用lodash chain:
var results = _(data).groupBy('date').map(function(v, k) {
return { date : k, price : _.sum(v, 'price') };
}).value();
答案 1 :(得分:1)
使用Array.prototype.reduce()
和Array.prototype.some()
的简单javascript解决方案。
var data = [{ date: '01/01/2016', price: 5 }, { date: '01/01/2016', price: 10 }, { date: '01/02/2016', price: 500 }],
reduced = data.reduce(function (r, a) {
!r.some(function (b) {
if (a.date === b.date) {
b.price += a.price;
return true;
}
}) && r.push({date:a.date, price:a.price});
return r;
}, []);
document.write('<pre>' + JSON.stringify(reduced, 0, 4) + '</pre>');
&#13;