在 JavaScript 中获取不同的集合

2024-04-18

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(使用前将#替换为@)

在 JavaScript 中获取不同的集合 的相关文章

随机推荐