javascript - 根据另一个列表中对象的属性过滤对象列表
问题描述
我有一个对象列表:
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"}]
解决方案
您可以创建一个对象或Map
将每个对象映射user
到其selected
属性。然后filter
使用地图对象的数组:
const filterMap = new Map(filter.map(o => [o.user, o.selected]))
const output = data.filter(d => filterMap.get(d.user))
推荐阅读
- if-statement - 有条件的 gsub 动作
- aws-ebs - AWS EBS 预留定价
- css - 使 gmail 和 facebook 登录按钮内联
- python - 将字符串列转换为 apache 梁中的整数列?
- jquery - 有没有办法将 ejs 模板渲染为 ajax 调用?
- r - List creation with incremental values triggered by logical vector in R
- vba - 循环遍历每个数据透视项目并根据条件突出显示整行
- ios - Windows 上的 libimobildevice:./autogen.sh 不工作
- matlab - 如何通过 matlab 函数设置 matlab 类的常量属性?
- typescript - 打字稿:提取嵌套键