Arrays 如何解析对象数组并通过聚合对其条目进行分组

Arrays 如何解析对象数组并通过聚合对其条目进行分组,arrays,grouping,aggregation,Arrays,Grouping,Aggregation,我有以下对象数组: var data=[ {atm:"7/10/2020 10:00:00",taskName: "alpha",user: 429}, {atm:"7/10/2020 10:02:00",taskName: "alpha",user: 429}, {atm:"7/10/2020 10:04:00",taskName: "alpha",user: 429}, {

我有以下对象数组:

var data=[
{atm:"7/10/2020 10:00:00",taskName: "alpha",user: 429},
{atm:"7/10/2020 10:02:00",taskName: "alpha",user: 429},
{atm:"7/10/2020 10:04:00",taskName: "alpha",user: 429},
{atm:"7/10/2020 10:06:00",taskName: "beta",user: 224},
{atm:"7/10/2020 10:08:00",taskName: "beta",user: 224},
{atm:"7/10/2020 10:10:00",taskName: "gama",user: 30},
{atm:"7/10/2020 10:12:00",taskName: "delta",user: 429},
{atm:"7/10/2020 10:14:00",taskName: "delta",user: 429}];
如何实现满足以下结构的新阵列

result =[
{user:429,taskName:"alpha",runTimes:3,startTime:"7/10/2020 10:00:00",finishTime:"7/10/2020 10:04:00"},
{user:224,taskName:"beta",runTimes:2,startTime:"7/10/2020 10:04:00",finishTime:"7/10/2020 10:08:00"},
{user:30,taskName:"gama",runTimes:1,startTime:"7/10/2020 10:08:00",finishTime:"7/10/2020 10:10:00"},
{user:429,taskName:"delta",runTimes:2,startTime:"7/10/2020 10:10:00",finishTime:"7/10/2020 10:14:00"}
]
场景是解析数据数组,并根据用户任务名对其值进行分组,然后将它们聚合,以提取每个用户发生的次数(运行时)

我尝试了一个示例,但无法重新创建上面的结果表:
let group=data.reduce((r,a)=>{r[a.user]=[…r[a.user]| |[],a];返回r;},{})

保持数据表的精确顺序是非常关键的。不仅仅是分组。 例子: 数据用户:429429429224224,30429429 ,结果用户:429224,30429

提前感谢您提供的任何有用的见解、提示、想法等

更新:这里有一个小小的进步……但不完整

我在数据数组中初始化了一个值为1的计数器键

var data=[
    {atm:"7/10/2020 10:00:00",taskName: "alpha",user: 429,counter:1}]....

var result = data.reduce((m, o) => {
    var found = m.find(p => p.user === o.user && p.taskName === o.taskName);
    if (found) {
        found.user = o.user;
        found.taskName = o.taskName;
        found.counter += o.counter;
    } else {
        m.push(o);
    }
    return m;
}, []);

console.log(result);