我有对象的两个阵列如下:
a1 = [
{id:1, name:"parent 1"},
{id:3, name:"parent 3"},
{id:4, name:"parent 4"},
{id:5, name:"parent 5"},
{id:6, name:"parent 6"}
];
a2 = [
{id:1, name:"parent 1"},
{id:2, name:"parent 2"},
{id:5, name:"parent 5"}
];
新的数组必须包括A2项目 - 如果,的A2和A1的项目有相同的ID(1,2,3,...) -else,A1的项目
阵列的顺序应按照该项目ID的。
预期结果:
a3 = [
{id:1, name:"parent 1"},
{id:2, name:"parent 2"},
{id:3, name:"parent 3"},
{id:4, name:"parent 4"},
{id:5, name:"parent 5"},
{id:6, name:"parent 6"}
];
你可以做这样的事情使用reduce
和Object.values
const a1=[{id:1,name:"parent 1"},{id:3,name:"parent 3"},{id:4,name:"parent 4"},{id:5,name:"parent 5"},{id:6,name:"parent 6"}],
a2=[{id:1,name:"parent 1"},{id:2,name:"parent 2"},{id:5,name:"parent 5"}];
const a1map = a1.reduce((r,a) => (r[a.id] = a, r), {}),
a2map = a2.reduce((r,a) => (r[a.id] = a, r), {}),
merged = {...a1map, ...a2map};
const output = Object.values(merged)
console.log(output)
创建具有id
作为键,然后从作为它的值的阵列,每个对象的累加器。然后将它们合并。如果同时在id
和a1map
存在a2map
,那么a2
值将replacce的a1
值。