SetCustomer.prototype.add = function (value) { this.items[value] = value; };
2.remove(vlaue)移除集合的一项
1 2 3 4 5 6 7 8
SetCustomer.prototype.remove = function (value) { if (this.has(value)) { deletethis.items[value]; returntrue; } else { returnfalse; } };
3.has(value)判断集合有无指定的一项?返回true:返回false
1 2 3 4 5 6 7
SetCustomer.prototype.has = function (value) { if (this.items.hasOwnProperty(value)) { returntrue; } else { returnfalse; } };
4.clear()移除集合所有项
1 2 3
SetCustomer.prototype.clear = function () { this.items = {}; };
5.size()返回集合包含项的个数
1 2 3
SetCustomer.prototype.size = function () { returnObject.keys(this.items).length; };
6.values()返回一个包含集合所有值的数组
1 2 3 4
SetCustomer.prototype.values = function () { // 因为存储集合时键值保持一致的 所以取键也行 returnObject.keys(this.items); };
封装两个集合的求集操作 1.并集:对于给定的2个集合,返回一个包含两个集合中 所有的 元素的新集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14
SetCustomer.prototype.union = function (otherSet) { // 1.创建新集合 let unionSet = newSetCustomer(); // 2.将A集合元素添加到新集合 for (let i = 0; i < this.size(); i++) { unionSet.add(this.values()[i]); }; // 3.将B集合添加到新集合 for (let i = 0; i < otherSet.size(); i++) { unionSet.add(otherSet.values()[i]); }; // 4.返回新集合 return unionSet; };
2.交集:对于给定的2个集合,返回一个包含两个集合中 共有的 元素的新集合
1 2 3 4 5 6 7 8 9
SetCustomer.prototype.intersection = function (otherSet) { let insSet = newSetCustomer(); for (let i = 0; i < this.size(); i++) { if (otherSet.has(this.values()[i])) { insSet.add(this.values()[i]); } }; return insSet; };
3.差集:对于给定的2个集合,返回一个包含所有存在A但不存在B集合的所有元素的新集合
1 2 3 4 5 6 7 8 9
SetCustomer.prototype.difference = function (otherSet) { let diffSet = newSetCustomer(); for (let i = 0; i < this.size(); i++) { if (!otherSet.has(this.values()[i])) { diffSet.add(this.values()[i]); } }; return diffSet; };
4.子集:验证一个集合是否是另一个集合的子集
1 2 3 4 5 6 7 8 9 10 11 12
SetCustomer.prototype.subset = function (otherSet) { if (this.size() > otherSet.size) { returnfalse; } else { for (let i = 0; i < this.size(); i++) { if (!otherSet.has(this.values()[i])) { returnfalse; } }; returntrue; } };