对于day 12 of Advent of Code我有一个解决方案,最终得到这种类型的结构:
let structure = new Set([
new Set(["1", "42"]),
new Set(["42"]),
new Set(["1", "42"])
]);
起初我天真地期望上面的内容与此相同:
let expected = new Set([
new Set(["1", "42"]),
new Set(["42"])
]);
但这当然没有发生,因为结构
中的第一个和第三个集合是不同的对象,因此外部集合不会对它们进行重复删除。
请注意,实际上我有 200 个集合,全部包含 1 到 10 个项目,因此该解决方案必须表现良好。
我能够使用任何可在前沿浏览器(例如 Chrome 63+)中运行的现代 JS,并且如果可能的话,我非常愿意使用普通 JavaScript。
以结构
或其内部数组作为起点,仅用两个不同的集合即可获得预期
结果的有效方法是什么?
最佳答案
function filterUniqueSets(...sets){
const hash = {};
return sets.filter(set => {
const k = [...set].join("¢");
if(hash[k]) return false;
return hash[k] = true;
});
}
所以人们可以这样做:
const result = new Set(filterUniqueSets(
new Set(1,2,3),
new Set(1,3,4)
));
关于javascript - 在 JavaScript 中获取不同的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47766399/