我是 Lodash 和函数式编程概念的新手。所以,我有一组对象,这些对象具有如下所示的日期:
[
{
"date": '1-Jan-2015',
"count": 4
},
{
"date": '4-Jan-2015',
"count": 3
},
{
"date": '1-Feb-2015',
"count": 4
},
{
"date": '18-Feb-2015',
"count": 10
}
]
我想以这样一种方式减少和聚合它,即我得到一个对象数组,其中每个对象都有月度数据而不是像这样的日数据:
[
{
"date": 'Jan, 2015',
"count": 7 // aggregating the count of January
},
{
"date": 'Feb, 2015',
"count": 14 //aggregating the count of February
}
]
目前,我编写了一段非常难读且令人费解的代码,其中充满了有效的 ifs 和 fors。但是,我想使用 lodash 重构它。可以使用 lodash 吗?我环顾四周,发现 _.reduce
和 _.groupBy
我可能会使用它们,但我现在很困惑,无法找到一个好的干净实现。
最佳答案
我们可以使用_.reduce
& _.values
var arr = [
{
"date": '1-Jan-2015',
"count": 4
},
{
"date": '4-Jan-2015',
"count": 3
},
{
"date": '1-Feb-2015',
"count": 4
},
{
"date": '18-Feb-2015',
"count": 10
}
]
_.values(_.reduce(arr,function(result,obj){
var name = obj.date.split('-');
name = name[1]+', '+name[2];
result[name] = {
date:name,
count:obj.count + (result[name]?result[name].count:0)
};
return result;
},{}));
关于javascript - lodash:根据日期聚合和减少对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454604/