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);