this.union = function (otherSet) { var unionSet = newSet();
var values = this.values(); for (var i = 0; i < values.length; i++) { unionSet.add(values[i]); }
values = otherSet.values(); for (i = 0; i < values.length; i++) { unionSet.add(values[i]); }
return unionSet; };
实现 intersection 方法
实现 intersection 方法(和另一个集合取交集),跑通如下测试:
1 2 3 4 5 6 7 8 9 10
var set = newSet(); set.add(1); set.add(2);
var otherSet = newSet(); otherSet.add(2); otherSet.add(3);
var intersectionSet = set.intersection(otherSet); expect(intersectionSet.values()).toEqual(['2']);
上述测试代码,仅仅是将 set 和 otherSet 两个集合取交集,最终为 2。实现思路非常简单,只需要新建一个集合,然后遍历 otherSet 的元素,只要在 set 中存在就添加到新集合中,最后返回新集合。实现代码:
1 2 3 4 5 6 7 8 9 10 11
this.intersection = function (otherSet) { var intersectionSet = newSet();
var values = otherSet.values(); for (var i = 0; i < values.length; i++) { if (this.has(values[i])) { intersectionSet.add(values[i]); } } return intersectionSet; };
实现 difference 方法
实现 difference 方法(和另一个集合取差集),跑通如下测试:
1 2 3 4 5 6 7 8 9 10
var set = newSet(); set.add(1); set.add(2);
var otherSet = newSet(); otherSet.add(2); otherSet.add(3);
var differenceSet = set.difference(otherSet); expect(differenceSet.values()).toEqual(['1']);
上述测试代码仅仅是将 set 和 otherSet 两个集合取差集得到 1。实现思路非常简单,只需要新建一个集合,然后遍历 set 中的元素,如果元素不存在于 otherSet 中就添加到新集合中。实现代码如下:
1 2 3 4 5 6 7 8 9 10 11
this.difference = function (otherSet) { var differenceSet = newSet();
var values = this.values(); for (var i = 0; i < values.length; i++) { if (!otherSet.has(values[i])) { differenceSet.add(values[i]); } } return differenceSet; };
实现 subset 方法
实现 subset 方法(判断是否是另一个集合的子集),跑通如下测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
var set = newSet(); set.add(1); set.add(2); set.add(3);
var otherSet = newSet(); otherSet.add(2); otherSet.add(3);