javascript - 比较 2 个对象数组并使用 Ramda.js 获取详细信息
问题描述
我有 2 个对象数组
如何比较两个对象数组并获取具有相同 ID 的用户的详细信息?
users:[{
id:"1",
displayName: "test"
email: "abc@gmail.com"
},
{
id:"2",
displayName: "test2"
email: "abc@gmail.com"
}]
listingAgents:[{
userId:"1",
listingId:"1354"
]}
解决方案
两个数组对于相同的 id 具有相同的对象?如果是:
users2_id = users2.map(u => u.id)
common_users = users1.filter(u => users2_id.includes(u.id))
如果不
common_users = users1.filter(u => {
user_2 = users2.find(u_2 => u_2.id === u.id)
if (!user_2) {
return false;
// do your stuff with the two different objects with same id like
return {...u, ...user_2}
});
但要小心复杂性!
编辑:
实际上对于第二部分,您可以先过滤其中一个数组,然后再使用它,您将删除很多无用的对象并根据数组的大小减少操作次数!喜欢:
users1_id = users1.map(u => u.id)
users2_filtered = users2.filter(u => users1_id.includes(u.id)
推荐阅读
- c# - c#在运行时从外部dll加载继承的类
- ethereum - 调用 super.owner().transfer(msg.value) 给出错误
- flutter - 使用 GestureDetector 捕捉 MaterialButton 孩子的手势
- c++ - 如何有条件地编译模板类的成员函数?
- mysql - 如何在每次上传时选择表中缺少记录的行
- mysql - 可以优化时间属性查询以删除 MAX 子查询吗?
- c++ - 如何让 PyPy 识别线性代数(Intel MKL、OpenBLAS)库?环境变量问题?
- python - Python中高斯函数的傅里叶变换
- java - 如何删除java文件中以特定字符串开头和结尾的特定行?
- windows - 在 kafka 2.12 的 win 10 中启动 Zookeeper 时出错