javascript - 如何检查数组对象的属性是否与另一个对象数组中的值之一匹配

标签 javascript arrays reactjs

我知道 header 太复杂了,但现在就是这样。让我为您说得更清楚。

有一个像这样的对象

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 数组并找到与 attendingUsers 具有相同 ID 的那些。

我想出了 users.filter(user => user.id == attendingUsers.map(attendingUser => attendingUser.id)); 但这只是返回空数组。知道解决此类问题的最佳方法是什么吗?

最佳答案

首先,您必须确保 ID 类型是否正确。 Users 的 ID 为 Number 类型,而 attendingUsers 的 ID 为 String 类型。

假设它们在下面的代码中都是相同的类型(我将使用字符串)。

您可以将 attendingUsers 数组转换为字符串数组:

const attendingUsersIds = attendingUsers.map(attendingUser => attendingUser.id)

然后将 id 与:

const matchedUsers = users.filter(user => attendingUsersIds.includes(user.id))

如果它们不是同一类型,您可以使用 user.id.toString() 将 Number 转换为 String 或 parseInt(attendingUser.id) 将字符串转换为数字。

关于javascript - 如何检查数组对象的属性是否与另一个对象数组中的值之一匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65343433/

相关文章:

JavaScript:正则表达式测试内外循环的不同结果

javascript - Chrome WebSocket 连接立即关闭

ruby-on-rails - “natural” 在 Ruby 中对数组进行排序

c# - 比较出错 c# Dictionary<String, string[]>

javascript - js map中的values only是什么意思,长篇怎么写

javascript - 当绑定(bind)到 AngularJS 中的函数时,幕后会发生什么

javascript - jquery 自动完成 javascript、php 和 mysql

python - numba:数组按行相乘

javascript - 像基于类的组件一样将数据传递给 React (Native) 钩子(Hook)

javascript - Gatsby Remark 图像和 Gatsby 图像之间的区别?