使用lodash和特定条件减少数组

时间:2015-12-07 14:07:01

标签: javascript lodash

我想使用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}
]

主要目标是检查是否有相同的日期并将价格累积到一个简单的对象中......

2 个答案:

答案 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;
&#13;
&#13;