简体   繁体   English

如何从对象数组中过滤数据

[英]How to filter data from array of objects

Hi can anyone help me create an array of objects where the array has the object which has the highest version of a particular event id嗨,谁能帮我创建一个对象数组,其中该数组具有object ,它具有特定事件 ID 的最高版本

Here is my 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 }]

Expected result预期结果

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

Here is what you want:这是你想要的:

 const ar = [{ 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 }]; const res = Array.from(ar.reduce((a, c) => { if (a.has(c.eventId)) { if (c.version > a.get(c.eventId).version) { a.set(c.eventId, c) } } else { a.set(c.eventId, c) } return a; }, new Map()).values()) console.log(res);

sort by the highest and then use filter按最高排序,然后使用filter

 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].version res=array.filter(o=>o.version==vn) console.log(res)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM