Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在数组列表(数组)中查找最频繁的(n个元素)组合_Javascript_Arrays_Combinations - Fatal编程技术网

Javascript 如何在数组列表(数组)中查找最频繁的(n个元素)组合

Javascript 如何在数组列表(数组)中查找最频繁的(n个元素)组合,javascript,arrays,combinations,Javascript,Arrays,Combinations,我试图找到一种方法,在数组列表中列出最频繁的组合。它必须至少有两个元素在一个数组中出现多次。然后按数字顺序显示最常光顾的人。假设我有一个数组列表,我想知道最常见的组合 列表=: Array (4) ["a", "b", "c", "d"] Array (4) ["b", "c", "d"] Array (4) ["c", "d&

我试图找到一种方法,在数组列表中列出最频繁的组合。它必须至少有两个元素在一个数组中出现多次。然后按数字顺序显示最常光顾的人。假设我有一个数组列表,我想知道最常见的组合

列表=:

Array (4) ["a", "b", "c", "d"]
Array (4) ["b", "c", "d"]
Array (4) ["c", "d"]
Array (4) ["a", "b"]
Array (4) ["a", "c", "d"]
预期结果:

No of occur - Elements
4 - ["c","d"]
2 - ["b","c"]; ["a","b"]; ["a","c","d"]
如何在所有这些数组中获得大多数元素的公共组合

在这种情况下,它是[c,d],因为它们发生了4次

数组中两个或多个元素的最常见组合


谢谢。

如果您期望的独特元素数量足够少,您可以使用以下方法:

使用数据集中的唯一元素确定所有可能的组合。在这种情况下,abcd、abc、abd、bcd、ab等。 对于每个组合,检查有多少输入数组包含组合的所有字符 随着数据中有更多独特的元素,例如从a到z的所有字符,可能的组合数将迅速增加

如果是这种情况,但单个列表仍然很小,我建议不要查看所有唯一的组合,而是使用数据中实际出现的组合

////乌提尔斯 //获取一个大小的所有唯一集 常量allset=xs,大小=> 大小===1 ? xs :xs.flatMap x、 i=>allSetsxs.slicei+1,大小-1.maptail=>[x,…tail] //获取两个值之间的整数范围 const range=from,to=>Array; //从数组中获取所有唯一值 const uniques=xs=>Array.fromnew Setxs; ////应用程序 常量输入=[[a,b,c,d],[b,c,d],[c,d],[a,b],[a,c,d]; const uniqueChars=uniquesinput.flat; 常数组合=范围2,4 .flatMapsize=>AllSetUniqueChars,大小; //创建集合以便我们可以使用.has而不是.includes const inputSets=input.mapxs=>new Setxs; //对于所有组合,检查有多少组包含所有字符 const combinationScores=组合 .mapcombo=>[ //检查有多少集合包含此组合的所有字符 inputSets.filters=>combo.everyx=>s.hasx.length, //加入集合以方便记录 combo.join ] //按外观计数排序 .排序[c1],[c2]=>c2-c1; //打印到控制台
console.logcombinationScores.join\n;显然它是有效的,但我认为我的数据大到足以崩溃,我现在有273个不同的唯一ID,数组列表包含3583个。是的,这肯定是太多的组合了。。。但是,如果没有一些示例数据,我就无法真正实现解决性能问题的代码原型。但也许其他人有主意!我认为最好对你的问题进行编辑,说明真实数据集的数量级。