比较两个嵌套的对象数组,并通过"id" JS 中的新数组来排除与值匹配的元素



我有两个对象数组,我需要通过匹配id将arr2名称与arr1匹配

您可以从arr2创建一个Map,由id键控,值为相应的对象。

然后映射arr1,在map中查找对象,同时查找对象本身和子对象:

let arr1 = [{id:1,children:[9]},{id:2,children:[]},{id:14,children:[3,42]},];
let arr2 = [{id:1,name:"name1"},{id:2,name:"name2"},{id:3,name:"name3"},{id:9,name:"name9"},{id:14,name:"name14"},{id:42,name:"name42"},{id:100,name:"idNotMatch"}];
const map = new Map(arr2.map(o => [o.id, o]));
const result = arr1.map(o => 
Object.assign(o, {
...map.get(o.id),
children: o.children.map(id => map.get(id))
})
);
console.log(result);

最新更新