如何从两个数组,对象对自己目标的产品ID的基础上获得新的阵列? [关闭]

问题描述 投票:-2回答:3

我有对象的两个阵列如下:

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"}
];
javascript arrays
3个回答
0
投票

你可以做这样的事情使用reduceObject.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作为键,然后从作为它的值的阵列,每个对象的累加器。然后将它们合并。如果同时在ida1map存在a2map,那么a2值将replacce的a1值。

© www.soinside.com 2019 - 2024. All rights reserved.