我正试图对两个对象数组进行交集操作。
https://codesandbox.io/s/friendly-bohr-v73ob?fbclid=IwAR3yQDnftREENi8lF6wCKYE_F09pimlLgfYca0B_oIPqYYHvbAf4cvnG-n4
const list1 = [
{
name: "skinType",
keys: [
{
id: "oily",
label: "Oily"
},
{
id: "dry",
label: "Dry"
}
]
},
{
name: "finish",
keys: [
{
id: "oily",
label: "Oily"
},
{
id: "dry",
label: "Dry"
},
{
id: "matte",
label: "Matte"
},
{
id: "natural",
label: "Natural"
},
{
id: "radiant",
label: "Radiant / Glow"
}
]
},
{
name: "texture",
keys: [
{
id: "matte",
labal: "Matte"
}
]
}
];
const list2 = [
{
name: "skinType",
keys: [
{
id: "oily",
label: "Oily"
},
{
id: "dry",
label: "Dry"
},
{
id: "gandac",
label: "mazga"
}
]
},
{
name: "finish",
keys: [
{
id: "oily",
label: "Oily"
}
]
}
];
我想到了一个解决方案,但它只能根据对象的名称键进行交集运算。现在,我需要根据键数组中的id执行交集运算。
const intersection = (list1, list2) => {
return list2.filter(drp => list1.some(rect => rect.name === drp.name));
};
const result = intersection(react, drupal);
期望的结果:
[
{
name: "skinType",
keys: [
{
id: "oily",
label: "Oily"
},
{
id: "dry",
label: "Dry"
}
]
},
{
name: "finish",
keys: [
{
id: "oily",
label: "Oily"
}
]
}
]