javascript - 在 JavaScript 中获取不同的集合

标签 javascript

对于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/

相关文章:

javascript - 是否可以在单元格之间旋转(交替)表格内容?

javascript - 如何在使用 JavaScript/JQuery 单击单选按钮时突出显示表格单元格 (TD)?

javascript - 即使填写了每个字段后,提交按钮也不会启用

javascript - 如何使用相对 URL 进行重定向?

javascript - 在 JavaScript 中打乱数组属性

javascript - 这个正则表达式模式/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/在Javascript中意味着什么?

Javascript:为什么我的即时搜索功能运行滞后,如何改进?

javascript - 握手期间 ASP.NET Core WebSocket 失败

javascript - 输入字符串和数组以运行。数组中出现匹配字符串的输出索引

javascript - 如何通过点击显示/隐藏v-loop中的每个元素?