假设我有以下代码:
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/