比较 ECMA6 集合是否相等

新手上路,请多包涵

你如何比较两个javascript集?我尝试使用 ===== 但都返回 false。

 a = new Set([1,2,3]);
b = new Set([1,3,2]);
a == b; //=> false
a === b; //=> false

这两个集合是等价的,因为根据定义, 集合没有顺序(至少通常没有)。我查看 了 MDN 上 Set 的文档, 但没有发现任何有用的信息。有人知道怎么做吗?

原文由 williamcodes 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 312
2 个回答

尝试这个:

 const eqSet = (xs, ys) =>
    xs.size === ys.size &&
    [...xs].every((x) => ys.has(x));

const ws = new Set([1, 2, 3]);
const xs = new Set([1, 3, 2]);
const ys = new Set([1, 2, 4]);
const zs = new Set([1, 2, 3, 4]);

console.log(eqSet(ws, xs)); // true
console.log(eqSet(ws, ys)); // false
console.log(eqSet(ws, zs)); // false

原文由 Aadit M Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议

您也可以尝试:

 var a = new Set([1,2,3]);
var b = new Set([1,3,2]);

let areSetsEqual = (a, b) => a.size === b.size && [...a].every(value => b.has(value));

console.log(areSetsEqual(a,b))

原文由 Max Leizerovich 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题