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个。是的,这肯定是太多的组合了。。。但是,如果没有一些示例数据,我就无法真正实现解决性能问题的代码原型。但也许其他人有主意!我认为最好对你的问题进行编辑,说明真实数据集的数量级。