首页 > 解决方案 > 比较 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"
]}

标签: javascriptramda.js

解决方案


两个数组对于相同的 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)
   

推荐阅读