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

How to filter data from array of objects

嗨,谁能帮我创建一个对象数组,其中数组具有 object,其中具有特定事件 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 }]

按最高排序然后使用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)

这是你想要的:

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