Javascript 如何从对象数组中筛选数据

Javascript 如何从对象数组中筛选数据,javascript,arrays,dictionary,filter,reduce,Javascript,Arrays,Dictionary,Filter,Reduce,嗨,有人能帮我创建一个对象数组吗?数组中有对象,该对象具有特定事件id的最高版本 这是我的阵列: [{ version: 1, eventId: 12, id: 22 }, { version: 2, eventId: 12, id: 23 }, { version: 3, eventId: 12, id: 24 }, { version: 1, eventId: 13, id: 25 }, { version: 2, eventId: 13, id: 26 }] 预期结果 [{

嗨,有人能帮我创建一个对象数组吗?数组中有
对象
,该对象具有特定事件id的最高版本

这是我的阵列:

[{ version: 1, eventId: 12, id: 22 },
 { version: 2, eventId: 12, id: 23 }, 
 { version: 3, eventId: 12, id: 24 }, 
 { version: 1, eventId: 13, id: 25 }, 
 { version: 2, eventId: 13, id: 26 }]
预期结果

[{ version: 3, eventId: 12, id: 24 }, { version: 2, eventId: 13, id: 27 }]

按最高值排序,然后使用
过滤器

array=[{version:1,eventId:12,id:22},{version:2,eventId:12,id:23},{version:3,eventId:12,id:24},{version:1,eventId:13,id:25},{version:2,eventId:13,id:26},{version:3,eventId:13,id:27}]
vn=array.sort((a,b)=>b.id-a.id)[0]。版本
res=array.filter(o=>o.version==vn)
console.log(res)
以下是您想要的:

const ar=[{version:1,eventId:12,id:22},
{版本:2,事件id:12,id:23},
{版本:3,事件id:12,id:24},
{版本:1,事件id:13,id:25},
{版本:2,事件id:13,id:26}];
const res=数组。from(ar.reduce)(a,c)=>{
如果(a.has(c.eventId)){
if(c.version>a.get(c.eventId.version){
a、 集合(c.eventId,c)
}
}否则{
a、 集合(c.eventId,c)
}
返回a;
},新映射())。值())
控制台日志(res)