javascript - 如何检查数组对象的属性是否与另一个对象数组中的值之一匹配
问题描述
我知道标题太复杂了,但现在就是这样。让我让你更清楚。
有一个像
const users= [
{
id:"1",
name:"John",
mail:"aaa@gmail.com",
},
{
id:"2",
name:"Joe",
mail:"bbb@gmail.com",
},
]
然后有
const attendingUsers = [
{
id:"1",
name:"John",
mail:"aaa@gmail.com",
.....
},
{
id:"2",
name:"Joe",
mail:"bbb@gmail.com",
.....
},}
]
这两个数组都有不同的属性,我只想得到对我很重要的那些。我需要的是查看users
数组并找到与来自的 id 相同的数组attendingUsers
。
我想出了users.filter(user => user.id == attendingUsers.map(attendingUser => attendingUser.id));
但这只是返回空数组。知道解决此类问题的最佳方法是什么吗?
解决方案
我们可以使用 Array.map 创建一个新的用户数组,并为每个用户添加一个属性isAttending 。
我们通过使用Array.some搜索具有相同 ID 的任何匹配的与会者来确定他们是否参加。
const users = [
{
id:1,
name:"John",
mail:"aaa@gmail.com",
},
{
id:2,
name:"Joe",
mail:"bbb@gmail.com",
},
{
id:3,
name:"Alice",
mail:"ccc@gmail.com",
}
]
const attendingUsers = [
{
id:"1",
name:"John",
mail:"aaa@gmail.com",
},
{
id:"2",
name:"Joe",
mail:"bbb@gmail.com",
}
]
const result = users.map(user => {
return { ...user, isAttending: attendingUsers.some(({id}) => id == user.id) };
});
console.log("Users (with attending property):", result);
推荐阅读
- php - 网络服务和肥皂
- android - 在 Windows / Android Studio 中编译 kotlin 时出错
- c - 这个大会到底在做什么?
- javascript - Javascript-JGRASP-回文
- assembly - 我的 ARM 汇编代码用于计算 32 位寄存器中 0 的数量有什么问题
- python - 似乎无法在 BeautifulSoup 中将文本附加到标签
- c# - 使用 ArcGIS Runtime 本地服务器实现 MVVM
- c - 比较字符和字符串
- c - C 中 printf 可打印的最大字符数
- ios - 当 HTML 作为 JSON 请求的参数发送时,具有多个 CSS 类的 HTML 不会呈现