根据另一个列表中对象的属性过滤对象列表

时间:2021-05-21 09:29:45

标签: javascript arrays list sorting

我有一个对象列表:

let data = [{... , user: "user 1"}, {... , user: "user 1"}, {... , user: "user 1"}, {... , user: "user 2"}, {... , user: "user 2"}]

我有另一个包含一些对象的列表,其中包含有关用户的信息以及它是否被选中

let filter = [{user: "user 1", selected: true}, {user: "user 2", selected: false}]

如何获取仅包含第一个列表中具有用户属性的对象的另一个数组,该用户属性在过滤器列表中的对象已选择属性设置为 true? 使用上述列表的结果示例为

let data = [{... , user: "user 1"}, {... , user: "user 1"}, {... , user: "user 1"}]

1 个答案:

答案 0 :(得分:0)

您可以创建一个对象或一个 Map,将每个 user 映射到其 selected 属性。然后使用地图对象 filter 数组:

const filterMap = new Map(filter.map(o => [o.user, o.selected]))
const output = data.filter(d => filterMap.get(d.user))