let set = new Set(); function union(set1, set2) { //set1与set2的并集 let unionSet = new Set(); set1.forEach(element => { unionSet.add(element); }); set2.forEach(element => { unionSet.add(element); }); return unionSet; } function intersection(set1, set2) { //set1与set2的交集 let intersectionSet = new Set(); if (set1.size <= set2.size) { set1.forEach(x => { if (set2.has(x)) { intersectionSet.add(x); } }); } else { set2.forEach(x => { if (set1.has(x)) { intersectionSet.add(x); } }); } return intersectionSet; } function difference(set1, set2) { //set1-set2 差集 let differenceSet = new Set(); set1.forEach(x => { if (set2.has(x)) { differenceSet.add(x); } }); return differenceSet; } //测试用例 set.add(1); console.log(set.values()); // outputs @Iterator console.log(set.has(1)); // outputs true console.log(set.size); // outputs 1 set.add(2); console.log(set.values()); // outputs [1, 2] console.log(set.has(2)); // true console.log(set.size); // 2 set.delete(1); console.log(set.values()); // outputs [2] set.delete(2); console.log(set.values()); // outputs [] const setA = new Set(); setA.add(1); setA.add(2); setA.add(3); const setB = new Set(); setB.add(2); setB.add(3); setB.add(4); console.log(union(setA, setB)); console.log(new Set([...setA, ...setB])); console.log(intersection(setA, setB)); console.log(new Set([...setA].filter(x => setB.has(x)))); console.log(difference(setA, setB)); console.log(new Set([...setA].filter(x => !setB.has(x))));