下面的数组有两个元素,名为Plan。我想使用Javascript按名称对数组进行分组,但是StartDate应该是所有名字为Plan的起始日期的最小值,而EndDate应该是以名称作为计划的所有结束日期的最大值。我想对元素进行分组,而不是排序它们。
[{"Name":"Define","StartDate":"2015-04-09","EndDate":"2015-04-22"},
{"Name":"Plan","StartDate":"2015-04-22","EndDate":"2015-04-29"},
{"Name":"Plan","StartDate":"2015-04-30","EndDate":"2015-05-14"]}]
所以我的最后一个数组应该如下所示
[{"Name":"Define","StartDate":"2015-04-09","EndDate":"2015-04-22"},
{"Name":"Plan","StartDate":"2015-04-22","EndDate":"2015-05-14"]}]
我被塞进了建造logic.Help的行列中。
发布于 2015-04-16 06:05:00
下面是如何使用underscore.js (http://underscorejs.org/)来实现的
arr = [{"Name":"Define","StartDate":"2015-04-09","EndDate":"2015-04-22"},
{"Name":"Plan","StartDate":"2015-04-22","EndDate":"2015-04-29"},
{"Name":"Plan","StartDate":"2015-04-30","EndDate":"2015-05-14"}];
result = _.chain(arr)
.groupBy(function(e){ return e.Name })
.pairs()
.map(function(e){
return {
Name: e[0],
StartDate: _.chain(e[1]).sortBy(function(e){ return new Date(e.StartDate).getTime(); }).first().value().StartDate,
EndDate: _.chain(e[1]).sortBy(function(e){ return -1 * new Date(e.EndDate).getTime(); }).first().value().EndDate
}
})
.value()
https://stackoverflow.com/questions/29676680
复制