javascript - 获取另一个数组中唯一的数组组合,并根据它们的出现次数对它们进行排名

标签 javascript

假设我有以下代码:

let array = [[1,2,3],[1,3,2],[2,3,1],[1,2,3],[2,4,5]]
我只想拥有一个唯一的数组,其中仅包含内部数组内容的唯一组合。最终输出应为:array = [[1,2,3],[2,4,5]]出现次数最多的内部数组应该位于新数组的顶部。如何做到这一点?

最佳答案

对它们进行排序,并使用 Set 来处理重复项:

const dupes = new Set();

const result = array.filter(arr => {
 const key = arr.sort().join("_");
 return !dupes.has(key) && dupes.add(key);
});

要在出现后对它们进行排序,我们必须计算原始数组中的出现次数,然后排序:

 const appeared = new Map();

 const result = array.filter(arr => {
   const key = arr.sort().join("_");
   return !appeared.has(key) && appeared.set(key, (appeared.get(key) || 0) + 1);
 }).sort((a, b) => appeared.get(a.join("_")) - appeared.get(b.join("_")));

关于javascript - 获取另一个数组中唯一的数组组合,并根据它们的出现次数对它们进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50659794/

相关文章:

javascript - 麻烦打印行号和 `alert` ing 长字符串变量来调试 JS 脚本 block

javascript - P5 - 处理。无法同时运行和渲染多个草图

javascript - 使用 Babel 和 Rollup 转译 startsWith() 时出现问题

javascript - 单击外部即可关闭滑动面板

php - 如何在javascript中获取复选框值

javascript - 在 gridview 中显示 float div

javascript - 从另一个对象构建对象,该对象将其键与数组中的值进行比较

javascript - Cypress - 比较两个输入的相等性

JavaScript:编写在短语上执行 Pig Latin 的函数;循环似乎给出了奇怪的输出

javascript - Javascript 有类似 %d 的东西吗?