比较 ECMA6 集以实现相等
2022-08-30 02:26:23
你如何比较两个javascript集?我尝试使用,但都返回假。==
===
a = new Set([1,2,3]);
b = new Set([1,3,2]);
a == b; //=> false
a === b; //=> false
这两个集合是等价的,因为根据定义,集合没有顺序(至少通常没有)。我查看了MDN上的Set文档,没有发现任何有用的东西。有人知道如何做到这一点吗?
你如何比较两个javascript集?我尝试使用,但都返回假。==
===
a = new Set([1,2,3]);
b = new Set([1,3,2]);
a == b; //=> false
a === b; //=> false
这两个集合是等价的,因为根据定义,集合没有顺序(至少通常没有)。我查看了MDN上的Set文档,没有发现任何有用的东西。有人知道如何做到这一点吗?
试试这个:
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
您还可以尝试:
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))