gpt4 book ai didi

javascript - 如何在javascript React中找到两个对象数组之间的所有交集?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:03 25 4
gpt4 key购买 nike

我有两个对象数组。数组可以是任意长度。例如我的第一个数组“details”由三个对象组成,

let details = [
{a: 1, b: 200, name: "dad"},
{a:2, b: 250, name: "cat"},
{a:3, b: 212, name: "dog" }
]

第二个数组由四个对象组成:

let certs = [
{id: 991, b: 250, dn: "qwerty", sign: "GOST"},
{id: 950, b: 251, dn: "how", sign: "RSA" },
{id: 100, b: 250, dn: "how are", sign: "twofish" },
{id: 957, b: 212, dn: "how you", sign: "black" }
]

如何通过对象的某些属性(例如“b”)获取包含所有交集的数组?

我的意思是我想从“certs”数组中获取过滤后的数组,它将只包含三个对象而不是四个。

因为 certs 数组中索引 1 处的元素具有等于 251 的属性“b”。但是“details”数组没有属性 b 等于 251 的对象。

所以我过滤的证书数组应该只包含三个对象。如何实现?

我尝试了 lodash 方法,但没有一个适合。例如:

_.intersectionBy(certs, details, 'b')

只给我这个:

0: {id: 991, b: 250, dn: "qwerty", sign: "GOST"}
1: {id: 957, b: 212, dn: "how you", sign: "black"}
length: 2

最终数组中不存在该对象:

{id: 100, b: 250, dn: "how are", sign: "twofish" }

最佳答案

只需使用 filter()方法两次:

let details = [
{a: 1, b: 200, name: "dad"},
{a:2, b: 250, name: "cat"},
{a:3, b: 212, name: "dog" }
]

let certs = [
{id: 991, b: 250, dn: "qwerty", sign: "GOST"},
{id: 950, b: 251, dn: "how", sign: "RSA" },
{id: 100, b: 250, dn: "how are", sign: "twofish" },
{id: 957, b: 212, dn: "how you", sign: "black" }
]

const result = certs.filter(cert => {
let arr = details.filter(detail => detail.b === cert.b)
return !(arr.length === 0)
});

console.log(result)

关于javascript - 如何在javascript React中找到两个对象数组之间的所有交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57674783/

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