如何使用Javascript按名称对数组进行分组,但取所有开始日期的最小值和所有结束日期的最大值

如何使用Javascript按名称对数组进行分组,但取所有开始日期的最小值和所有结束日期的最大值,javascript,jquery,json,Javascript,Jquery,Json,下面是一个数组,其中有2个元素的名称为Plan。我想使用Javascript按名称对数组进行分组,但StartDate应该是名称为Plan的所有StartDate中的最小值,EndDate应该是名称为Plan的所有EndDate中的最大值。我想对元素进行分组,而不是对它们进行排序 [{"Name":"Define","StartDate":"2015-04-09","EndDate":"2015-04-22"}, {"Name":"Plan","StartDate":"2015-04-22","

下面是一个数组,其中有2个元素的名称为Plan。我想使用Javascript按名称对数组进行分组,但StartDate应该是名称为Plan的所有StartDate中的最小值,EndDate应该是名称为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"]}]

我在构建逻辑时遇到了麻烦。非常感谢您的帮助。

以下是如何使用下划线.js()


推送物品前,检查条件。请把你的JavaScript代码拿出来检查一下,这正好符合你的问题@oscarvady可能的副本谢谢!但是除了数组,我还没有其他代码。如果你能帮忙的话,很好。@Danny但是它使用的是underline.js。我想用简单的js或jquery来做,你能帮我用简单的js或jquery来做吗。非常感谢。我现在用的是underline。如果我的数组还包含一个元素,比如Id,你能帮我吗?例如:[{“Id”:“1”,“Name”:“Define”,“StartDate”:“2015-04-09”,“EndDate”:“2015-04-22”},{“Id”:“2”,“Name”:“Plan”,“StartDate”:“2015-04-22”,“EndDate”:“2015-04-29”},{“Id”:“2”,“Name”:“Plan”,“StartDate”:“2015-04-30”,“EndDate”:“2015-05-14”}]Furqan,我应该在代码中做些什么更改以从数组中获取一些附加参数。我的新数组与上面的数组类似。只需添加Id:u.first(e[1]).Id到最后一个映射函数返回的对象。
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()