返回元素交集的Javascript数组操作

返回元素交集的Javascript数组操作,javascript,node.js,algorithm,data-structures,Javascript,Node.js,Algorithm,Data Structures,我有一个javascript数组productIds=[3,4,5,8],如下所示。 现在,每个ProductId都有自己的兼容产品 3 has compatible Product -> 5, 7 4 has compatible Product -> 7, 9 5 has compatible Product -> 7, 1, 2 8 has compatible Product -> 7, 4, 2 现在交点应该是乘积7,所以它应该

我有一个javascript数组
productIds=[3,4,5,8]
,如下所示。 现在,每个ProductId都有自己的兼容产品

    3 has compatible Product -> 5, 7
    4 has compatible Product -> 7, 9
    5 has compatible Product -> 7, 1, 2
    8 has compatible Product -> 7, 4, 2
现在交点应该是乘积7,所以它应该返回7。 productIds数组的长度也可以为n=0到12。有人能提出解决办法吗

输入productId=[3,4,5,8]

兼容产品的Sql表

身份证件 产品ID 相容性 1. 3. 5. 2. 3. 7. 3. 4. 7. 4. 4. 9 5. 5. 7. 6. 5. 1. 7. 5. 2. 8. 8. 7. 9 8. 4. 10 8. 2.
我们可以将其建立在一个函数上,该函数取列表集合的交集

这里我们有
intersectAll
,它本身就是建立在
intersect
之上的。然后,我们只需获取提供的每个产品的兼容值数组,并调用
intersectAll

const intersect=(xs,ys)=>
过滤器(x=>ys.includes(x))
const intersectAll=([x,…xs])=>
x==未定义?[]:xs.reduce(相交,x)
常量findJointCompatibles=(compatibles,id)=>
intersectAll(id.map(id=>compatibles[id]| |[]))
常量兼容={3:[5,7],4:[7,9],5:[7,1,2],8:[7,4,2]}
控制台日志(
findJointCompatibles(compatibles[3,4,5,8])

)
请发布您到目前为止尝试过的内容。以及您的源数据。@MarkBaijens已经发布了我的compatibleProducttable@VishalKumar请阅读,如果兼容产品的计数与输入长度匹配,您需要这些兼容产品吗?