gpt4 book ai didi

javascript - 比较两个对象javascript数组并删除不相等的值

转载 作者:行者123 更新时间:2023-11-28 12:59:55 24 4
gpt4 key购买 nike

我有两个对象数组。

e = [{uniqueId:'',active:'a',qId:10},{uniqueId:'',active:'a',qId:11}]
f = [{uniqueId:50,active:'a',qId:10},{uniqueId:51,active:'a',qId:11},{uniqueId:52,active:'a',qId:13}]

我想比较这些对象,我的最终结果如下

result = [{uniqueId:50,active:'a',qId:10},{uniqueId:51,active:'a',qId:11}]

我试过了

let result = e.filter(o1 => f.some(o2 => o1.qId != o2.qId));

但是我越来越

[{uniqueId:50,active:'a',qId:10},{uniqueId:51,active:'a',qId:11},{uniqueId:52,active:'a',qId:13}]

如何达到想要的输出?

最佳答案

看起来您应该过滤 f,而不是 e,因为 结果 显示来自 f 的值,不是来自 e

为了降低复杂性,首先将 e 数组的 qId 转换为 Set 以便快速查找。 (Set 的查找时间为 O(1),而 .some 的复杂度为 O(N))

const e = [{uniqueId:'',active:'a',qId:10},{uniqueId:'',active:'a',qId:11}]
const f = [{uniqueId:50,active:'a',qId:10},{uniqueId:51,active:'a',qId:11},{uniqueId:52,active:'a',qId:13}]

const qIds = new Set(e.map(({ qId }) => qId));
console.log(f.filter(({ qId }) => qIds.has(qId)));

关于javascript - 比较两个对象javascript数组并删除不相等的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51607695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com