如何从对象数组中过滤数据
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);
嗨,谁能帮我创建一个对象数组,其中数组具有 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);