Javascript 将属性从一个数组添加到具有相同键的另一个数组中

Javascript 将属性从一个数组添加到具有相同键的另一个数组中,javascript,arrays,Javascript,Arrays,我没有用文字来解释这个问题,而是在下面做了一个快速的视觉表示 假设我有以下数组: let arr1 = [ { id: 1, someKey: someValue }, { id: 2, someKey: someValue }, ] 和另一个阵列: let arr2 = [ { id: 1, numberOfItems: 10 }, { id: 2, numberOfItems: 20 }, ]

我没有用文字来解释这个问题,而是在下面做了一个快速的视觉表示

假设我有以下数组:

let arr1 = [
  {
    id: 1,
    someKey: someValue
  },
  {
    id: 2,
    someKey: someValue
  },
]
和另一个阵列:

let arr2 = [
  {
    id: 1,
    numberOfItems: 10
  },
  {
    id: 2,
    numberOfItems: 20
  },
]
如何创建以下数组

let result = [
  {
    id: 1,
    someKey: someValue,
    numberOfItems: 10
  },
  {
    id: 2,
    someKey: someValue,
    numberOfItems: 10
  },
]
如您所见,两个数组都具有相同的
id
值。我想从第二个数组中获取
numberOfItems:10
,并将其放置在同一id下的第一个数组中


注意:这两个ID完全不同,具有不同的属性和长度。唯一的相似之处是
id

您可以首先创建一个以id为键的地图,然后组合对象,这将解决O(n)中的问题:

让arr1=[
{
id:1,
关键人物:3
},
{
id:2,
关键人物:6
},
];
设arr2=[
{
id:1,
项目数目:10
},
{
id:2,
项目数目:20
},
];
让arr2Map=arr2.reduce((acc,curr)=>{
acc[当前id]=当前
返回acc;
}, {});
让combined=arr1.map(d=>Object.assign(d,arr2Map[d.id]);
控制台日志(组合)
让arr1=[
{
id:1,
关键人物:3
},
{
id:2,
关键人物:6
},
];
设arr2=[
{
id:1,
项目数目:10
},
{
id:2,
项目数目:20
},
];
设idToNumberOfItem={};
arr2.forEach({id,numberOfItems})=>idToNumberOfItem[id]=numberOfItems)
arr1.forEach((item)=>item['numberOfItems']=idToNumberOfItem[item.id])

控制台日志(arr1)两个数组的长度是否相同?同样的内容?相同的项目顺序?不,除了
id