javascript - 查找两个不同长度的对象数组之间的交集
问题描述
我有两个对象数组,它们共享同名 ( userId
) 的属性,但长度不同。这是一个简单的例子:
const arr1= [
{
userId: "1",
name:"Tommy",
hobbies:"fighting"
},
{
userId: "16",
name:"Kino",
hobbies:"skating"
}
];
const arr2= [
{
userId: "1",
story:"Big fight"
},
{
userId:"16",
story:"big momentum"
}
];
我的理想结果是拥有一个数组,它将属性匹配的两个对象userId
(以及属性匹配的所有对象)组合在一起,并保留两者的所有属性。
我试过使用concat
然后过滤,但无济于事。关于如何实现这一点的任何线索或建议?
解决方案
这可能是一个可能的解决方案:
const arr1 = [{userId: "1", name:"Tommy", hobbies:"fighting"}, {userId: "16", name:"Kino", hobbies:"skating"}];
const arr2 = [{userId: "1", story:"Big fight"}, {userId:"16", story:"big momentum"}];
const obj = [...arr1, ...arr2].reduce((acc, el) => {
acc[el.userId] = {...acc[el.userId], ...el};
return acc;
}, {});
const result = Object.values(obj);
console.log(result);
推荐阅读
- webpack - terser-plugin :无效的选项对象
- python - 已解决:使用 ProcessPoolExecutor 提交时子进程不运行
- python - 无法“工具链构建 kivy”
- django - 自动刷新缓存 DRF
- django - 如何使用 Django 项目配置 apache-airflow 以使用 ORM
- dhcp - 找出我的 ISP 的 DHCP 服务器提供的公共 IP 地址范围
- python - python unittest验证按钮单击
- javascript - 显示嵌套表
- java - 在android studio中获取Web api到String
- elasticsearch - NEST V7.12.1 - 为“Elasticsearch.Net.ApiCallDetails”类型的属性“响应”检测到自引用循环