我有两个数组,我希望能够比较这两个数组,并用details数组替换info数组中id的对象值,然后按原样填充其余的数组。我还没找到像这样的东西。返回相似点的最佳方法是什么?
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"
}
]发布于 2021-09-15 05:23:56
对于较大数量的数据,最好首先为详细信息数据创建一个映射,以便在固定时间内检索id:
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);
发布于 2021-09-15 05:20:18
使用地图,查找和销毁任务。
const result = info.map(item => {
const new_info = details.find(detail => detail.id === item.id);
return {
...item,
...new_info,
};
})https://stackoverflow.com/questions/69187415
复制相似问题