Javascript 解析数组数组并返回公共交集

Javascript 解析数组数组并返回公共交集,javascript,arrays,Javascript,Arrays,我有一个这样的数组 arrays = [ ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'g'], ['a', 'b', 'c', 'g', 'x'], ] 我需要形成一个所有交集的数组。像这样 function get_intersects(arrays) { // return all intersections return ['a', 'b', 'c',

我有一个这样的数组

    arrays = [
        ['a', 'b', 'c', 'd'],
        ['a', 'b', 'c', 'g'],
        ['a', 'b', 'c', 'g', 'x'],
    ]
我需要形成一个所有交集的数组。像这样

    function get_intersects(arrays) {
        // return all intersections
        return ['a', 'b', 'c', 'g'];
    }
注意g是如何返回的,尽管它不在所有三个中,但至少在其中两个中

这是我的尝试,但g不见了

数组=[ [a',b',c',d'], [a',b',c',g'], [a',b',c',g',x'], ] 函数get_intersectsarrays{ 返回数组.shift.filterfunction v{ return array.everya=>a.indexOfv!=-1; }; }
logget_intersectsarrays在迭代数组时,可以使用助手数组来放置您访问过的值

常量数组=[ [a',b',c',d'], [a',b',c',g'], [a',b',c',g',x'], ]; 常量魔术=数组=>{ 常量值=[]; 常数res=[]; arrays.forEacharray=>{ array.foreach=>{ //如果当前值已被访问且尚未插入结果数组中 如果values.indexOfe!=-1&&res.indexOfe===-1 res.push; //如果当前值尚未访问 如果values.indexOfe==-1 values.push; }; }; 返回res; };
console.logmagicarrays 如果您的目标是确定单个字母是否在至少两个数组中,则可以对它们进行计数。不清楚内部数组是否可以有像['a'、'b'、'c'、'g'、'x'、'x'这样的重复。假设这些表示集合且不会有重复的成员,则只需对计数大于1的任何内容进行计数和筛选:

变量数组=[ [a',b',c',g'], [a',b',c',d'], [a',b',c',g',x'], ] var counts=arrays.reducecounts,arr=>{ arr.forEachc=>计数[c]=计数[c]| | 0+1 返回计数 }, {} 让common=Object.keyscounts.filterk=>counts[k]>1 console.logcommon您还可以与和一起使用:

让数据=['a','b','c','d'],['a','b','c','g'],['a','b','c','g','x']] 让结果=[…new Setdata.flat.filterx,i,a=>a.lastIndexOfx!=i]
console.logresult排序以查找重复项,并在以下操作之后删除重复项:

变量数组=['a','b','c','d'],['a','b','c','g'],['a','b','c','g','x']]
console.log[…new Setarrays.flat.sort.filterv,i,a=>v==a[-i]]向我们展示您迄今为止尝试的代码。你需要自己努力:-还有-不清楚-你说了全部,但是当只有两个g时,g就返回了。。。实际要求是什么?任意两个数组中的交集?这个解决方案应该支持任意数量的数组吗?可能是Heh的重复,合并所有数组,然后找到重复的值。如果它们不在原始数组中重复,可能是一种方法。我发布了我的尝试。。。我的问题是GT阵列的数量总是在变化@cale_b