For 代码出现第 12 天 http://adventofcode.com/2017/leaderboard/day/12我有一个解决方案,最终得到这种类型的结构:
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"])
]);
但这当然没有发生,因为第一盘和第三盘是structure
是不同的对象,因此外部集合不会对它们进行重复删除。
请注意,实际上我有 200 个集合,全部包含 1 到 10 个项目,因此该解决方案必须表现良好。
我能够使用任何在前沿浏览器(例如 Chrome 63+)中工作的现代 JS,并且如果可能的话,我非常喜欢使用普通 JavaScript。
有什么有效的方法可以到达expected
结果只有 2 个不同的集合,给定structure
或其内部数组作为起点?
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)
));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)