在javascript中每小时将数组中的对象分组

在javascript中每小时将数组中的对象分组,javascript,Javascript,我有一个数组中的对象 var progress = [ { "duration" : 120, "dateAdded" : "2017-03-02T15:45:31.315Z" }, { "duration" : 120, "dateAdded" : "2017-03-02T15:47:32.150Z" },{ "duration" : 120, "dateAdde

我有一个数组中的对象

var progress = [ 
    {
        "duration" : 120,
        "dateAdded" : "2017-03-02T15:45:31.315Z"
    }, 
    {
        "duration" : 120,
        "dateAdded" : "2017-03-02T15:47:32.150Z"
    },{
        "duration" : 120,
        "dateAdded" : "2017-03-02T12:45:32.150Z"
    },{
        "duration" : 120,
        "dateAdded" : "2017-03-02T12:47:32.150Z"
    },{
        "duration" : 120,
        "dateAdded" : "2017-03-02T10:45:32.150Z"
    }
]
如何将每小时的对象分组? 我想要一个输出

var progress = [{duration:340,time:"15:00"},{duration:340,time:"12:00"},{duration:120,time:"10:00"}]
所以这里发生的是,我添加了每小时的所有持续时间。例如,在时间15:00,我有120+120=340


我将使用时间框架的解决方案。

您可以仅使用日期和小时对部分的日期进行切片,并将其分组到哈希表中

var progress=[{duration:120,dateAdded:“2017-03-02T15:45:31.315Z”},{duration:120,dateAdded:“2017-03-02T15:47:32.150Z”},{duration:120,dateAdded:“2017-03-02T12:45:32.150Z”},{duration duration:120,dateAdded:“2017-03-02T10:45:32.150Z”},
hash=Object.create(null),
分组=[];
进度。forEach(职能(a){
var key=a.dateAdded.slice(11,13);
如果(!哈希[键]){
hash[key]={duration:0,time:key+':00'};
push(hash[key]);
}
hash[key].duration+=a.duration;
});
分组。排序(函数(a,b){
返回b.time.localeCompare(a.time);
});
控制台日志(分组)

。作为控制台包装{max height:100%!important;top:0;}
如何将dateAdded值转换为15:00?@JMA,只需添加缺少的部分。我编辑了问题,请再次检查。谢谢:)
newdate(a.dateAdded)。getUTCHours()
对于小时部分来说不是更好的解决方案吗?:)这都是祖鲁人的时间,别担心(你看到
Z
?)