function Set() {
this.items = {};
Set.prototype.add = function(value) {
// 判断当前集合是否包含某个元素
if(this.has(value)) {
return false;
}
this.items[value] = value;
return true;
}
Set.prototype.has = function(value) {
return this.items.hasOwnProperty(value)
}
Set.prototype.remove = function(value) {
if(!this.has(value)) {
return false;
}
delete this.items[value];
return true;
}
Set.prototype.clear = function() {
return this.items = {};
}
Set.prototype.size = function() {
return Object.keys(this.items).length;
}
Set.prototype.values = function() {
return Object.keys(this.items);
}
Set.prototype.union = function(otherSet) {
var unionSet = new Set();
var values = this.values();
for(var i =0;i<values.length;i++) {
unionSet.add(values[i]);
}
values = otherSet.values();
for(var i =0;i< values.length;i++) {
unionSet.add(values[i]);
}
return unionSet;
}
Set.prototype.intersection = function(otherSet) {
var intersectionSet = new Set();
var values = this.values();
for(var i =0;i<values.length;i++){
var item = values[i];
if(otherSet.has(item)) {
intersectionSet.add(item);
}
}
return intersectionSet;
}
// 差集
Set.prototype.difference = function(otherSet) {
// 创建新的集合
var differenceSet = new Set();
var values = this.values();
for(var i =0;i<values.length;i++){
var item = values[i];
if(!otherSet.has(item)) {
differenceSet.add(item);
}
}
return differenceSet;
}
// 子集
Set.prototype.subset = function(otherSet) {
// 创建新的集合
var values = this.values();
for(var i =0;i<values.length;i++){
var item = values[i];
if(!otherSet.has(item)) {
return false;
} else {
return true;
}
}
}
}
var set = new Set();
set.add("abc");
set.add("bcd");
set.add("cde");
// alert(set.values());
// alert(set.remove("bcd"));
//alert(set.has("bcd"));
var newSet = new Set();
newSet.add('bcd');
// newSet.add('ddd');
// var unionSet = set.union(newSet);
// alert(unionSet.values());
// var intersectionSet = set.intersection(newSet);
// var differenceSet = set.difference(newSet);
// alert(differenceSet.values());
var subset = newSet.subset(set);
alert(subset);