将2套相加的运算称为并集。您需要在检查重复项时将每个对象从一组添加到另一组。我们可以使用已经实现的两种方法来实现此方法。
由于我们不希望对现有集合进行突变,而是将其创建并返回一个新集合,因此我们将该函数实现为静态函数。我们首先需要检查传递给它的对象是否确实是MySet类的实例。
static union(s1, s2) { if (!s1 instanceof MySet || !s2 instanceof MySet) { console.log("The given objects are not of type MySet"); return null; } let newSet = new MySet(); s1.forEach(elem => newSet.add(elem)); s2.forEach(elem => newSet.add(elem)); newSet; }
您可以使用以下方式进行测试:
const testSet1 = new MySet(); testSet1.add(1); testSet1.add(2); const testSet2 = new MySet(); testSet2.add(2); testSet2.add(5); let testSet3 = MySet.union(testSet1, testSet2); testSet3.display();
输出结果
这将给出输出-
{ '1': '1', '2': '2', '5': '5' }
请注意,ES6 API中也没有联合功能。您可以按以下步骤使此函数在Set类中可用:&minusl
Set.union = function(s1, s2) { if (!s1 instanceof Set || !s2 instanceof Set) { console.log("The given objects are not of type Set"); return null; } let newSet = new Set(); s1.forEach(elem => newSet.add(elem)); s2.forEach(elem => newSet.add(elem)); return newSet; }
您可以使用以下方式进行测试:
let setA = new Set([1, 2, 3, 4]); let setB = new Set([2, 3]); console.log(Set.union(setA, setB));
输出结果
这将给出输出-
Set { 1, 2, 3, 4 }