首页 > 解决方案 > 从其他数组中按数组中的 id 查找元素

问题描述

我有 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"}
];

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

{id: "124", name: "name smth", time: "11:30"}

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

标签: javascriptarraysfind

解决方案


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);

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

pickups.map(el => ({ ...el, ...address.find(addr => addr.id == el.id)}))

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


推荐阅读