从其他数组中按 id 在数组中查找元素

pro*_*mer 3 javascript arrays find

我有 2 个数组:

地址 - 带有 id 的对象数组

拾取 - 带有 id 的对象数组

我需要通过 id 将这些数组连接成 1。

例子:

address = [
  {id: "123", name: "any city street"},
  {id: "124", name: "any city street"},
  {id: "125", name: "any city street"},
  {id: "126", name: "any city street"}
];

pickups = [
  {id: "123", time: "10:20"},
  {id: "124", time: "11:30"},
  {id: "125", time: "12:00"},
  {id: "126", time: "12:20"}
];

Run Code Online (Sandbox Code Playgroud)

我需要通过 id 连接它,结果如下:

{id: "124", name: "name smth", time: "11:30"}
Run Code Online (Sandbox Code Playgroud)

我的意思是将这 2 个数组映射为一个

Alb*_*lia 5

address = [
  {id: "123", name: "any city street"},
  {id: "124", name: "any city street"},
  {id: "125", name: "any city street"},
  {id: "126", name: "any city street"}
];

pickups = [
  {id: "123", time: "10:20"},
  {id: "124", time: "11:30"},
  {id: "125", time: "12:00"},
  {id: "126", time: "12:20"}
];

const result = pickups.map(pickup => {
    let match = address.find(addr => addr.id == pickup.id);
    return {
         id : pickup.id, 
         time: pickup.time,
         name : match.name,
    }
})
console.log(result);
Run Code Online (Sandbox Code Playgroud)

或者如果你真的很喜欢短代码:

pickups.map(el => ({ ...el, ...address.find(addr => addr.id == el.id)}))
Run Code Online (Sandbox Code Playgroud)

请注意,这仅在pickups和之间始终匹配时才有效address