functionSet() { this.item = {} Set.prototype.add = function (value) { if (this.has(value)) { returnfalse } this.item[value] = value returntrue } Set.prototype.has = function (value) { returnthis.item.hasOwnProperty(value) } Set.prototype.remove = function (value) { if (!this.has(value)) { returnfalse } deletethis.item[value] returntrue } Set.prototype.clear = function () { this.item = {} } Set.prototype.size = function () { returnObject.keys(this.item).length } Set.prototype.value = function () { returnObject.keys(this.item) } }
我们可以对集合作如下的一些运算:
交集:对于给定的两个集合,返回一个包含两个集合中 共有 元素的新集合。
并集:对于给定的两个集合,返回一个包含两个集合中 所有 元素的新集合。
差集:对于给定的两个集合,返回一个包含所有 存在于第一个集合且不存在于第二个集合 的元素的新集合。
子集:验证一个给定集合是否是另一集合的子集。 并集代码实现:
1 2 3 4 5 6 7 8 9 10 11 12
Set.prototype.union = function (otherSet) { let unionSet = newSet() let value = this.value() for(let i = 0; i< value.length; i++){ unionSet.add(value[i]) } let v = otherSet.value() for(let i = 0; i< value.length; i++){ unionSet.add(v[i]) } return unionSet }
交集代码实现:
1 2 3 4 5 6 7 8 9 10 11
Set.prototype.intersection = function (otherSet) { let intersectionSet = newSet() let value = this.value() for(let i = 0; i< value.length; i++){ let it = value[i] if (otherSet.has(it)) { intersectionSet.add(it) } } return intersectionSet }
差集代码实现:
1 2 3 4 5 6 7 8 9 10 11
Set.prototype.difference = function (otherSet) { let differenceSet = newSet() let value = this.value() for(let i = 0; i< value.length; i++){ let it = value[i] if (!otherSet.has(it)) { differenceSet.add(it) } } return differenceSet }
子集代码实现:
1 2 3 4 5 6 7 8 9 10 11
Set.prototype.sub = function (otherSet) { let subSet = newSet() let value = this.value() for(let i = 0; i< value.length; i++){ let it = value[i] if (!otherSet.has(it)) { returnfalse } } returntrue }