【发布时间】:2021-04-08 18:16:18
【问题描述】:
假设我有 2 个数组 arr1,arr2:
var arr1 = [{id:1, name:2}, {id:2, name:3}, {id:3, name:2}];
var arr2 = [{orgid:2, desc:'2'},{orgid:1, desc:'1'},{orgid:1, desc:'3'}]
我想实现以下目标:
var arr3 = [{id:1, name:2, org: [{desc:'1'},{ desc:'3'}]},{id:2, name:3, org: {desc:'2'}} , {id:3, name:2, org: []}]
我尝试了以下方法:
const map = new Map();
arr1.forEach(item => map.set(item.id, item));
arr2.forEach(item => map.set(item.orgid, {...map.get(item.orgid), ...item}));
这给了我类似的东西:
[{"id":1,"name":2,"orgid":1,"desc":"1"}, {"id":2,"name":3,"orgid":2,"desc":"2"}]
所以 id 和 orgId 是相同的,它是我用来合并数组的键。
有一个细微的变化,我可能期望 arr2 中相同 orgId 的多个对象,这应该映射到 arr3 中的 org 数组。
arr2 中也可能不存在 orgId,这将在 arr3 中填充一个空白 org[]
【问题讨论】:
-
你试过什么?发布它,以便其他人可以帮助您。
-
用我尝试过的方法编辑了帖子,但是我正在尝试创建 arr3
-
检查我的答案
-
请再次检查我的答案。我已经更新了。
标签: javascript