首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较这两个数组,并替换/合并其他数组(js)中的id值。

比较这两个数组,并替换/合并其他数组(js)中的id值。
EN

Stack Overflow用户
提问于 2021-09-15 05:15:25
回答 2查看 163关注 0票数 0

我有两个数组,我希望能够比较这两个数组,并用details数组替换info数组中id的对象值,然后按原样填充其余的数组。我还没找到像这样的东西。返回相似点的最佳方法是什么?

代码语言:javascript
复制
const details = [{
    id: "id1",
    description: "new description-1"
  },
  {
    id: "id3",
    linkUrl: "new link-1"
  }
]

const info = [{
    id: "id1",
    description: "old description-1",
    linkUrl: "#id1link-1",
    image: "#imageUrl-1"
  },
  {
    id: "id2",
    description: "description-2",
    linkUrl: "#id1link-2",
    image: "#imageUrl-2"
  },
  {
    id: "id3",
    description: "description-3",
    linkUrl: "#old link-2",
    image: "#imageUrl-2"
  }
]

const result = [{
    id: "id1",
    description: "new description-1",
    linkUrl: "#id1link-1",
    image: "#imageUrl-1"
  },
  {
    id: "id2",
    description: "description-2",
    linkUrl: "#id1link-2",
    image: "#imageUrl-2"
  },
  {
    id: "id3",
    description: "description-3",
    linkUrl: "#new link-2",
    image: "#imageUrl-2"
  }
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-15 05:23:56

对于较大数量的数据,最好首先为详细信息数据创建一个映射,以便在固定时间内检索id:

代码语言:javascript
复制
const details = [{id:"id1",description: "new description-1"},{id: "id3",linkUrl: "new link-1"}];
const info = [{id: "id1",description: "old description-1",linkUrl: "#id1link-1",image: "#imageUrl-1"},{id: "id2",description: "description-2",linkUrl: "#id1link-2",image: "#imageUrl-2"},{id: "id3",description: "description-3",linkUrl: "#old link-2",image: "#imageUrl-2"}];

const map = new Map(details.map(({id, ...rest}) => [id, rest]));
const result = info.map(o => ({...o, ...map.get(o.id)}));

console.log(result);

票数 0
EN

Stack Overflow用户

发布于 2021-09-15 05:20:18

使用地图,查找和销毁任务。

代码语言:javascript
复制
const result = info.map(item => {
    const new_info = details.find(detail => detail.id === item.id);

    return {
        ...item,
        ...new_info,
    };
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69187415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档