<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>集合类</title>
</head>
<body>
<script>
function Set(){
this.item={};
//添加方法
Set.prototype.add = function (value) {
//判断集合中是否有该元素
if (this.has(value)) return false;
//将元素添加到对象中
this.item[value] = value;
return true;
}
Set.prototype.has = function (value) {
return this.item.hasOwnProperty(value);
}
Set.prototype.remove = function (value) {
if (!this.has(value)) return false;
//删除元素
delete this.item[value];
return true;
}
Set.prototype.clear = function () {
this.item = {};
return true;
}
Set.prototype.size = function () {
return Object.keys(this.item).length;
}
Set.prototype.values = function () {
return Object.keys(this.item);
}
//集合间的操作
//并集
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]);
}
//添加B集合
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 = otherSet.values();
for(var i = 0;i < values.length;i++){
if (this.has(values[i])){
intersectionSet.add(values[i]);
}
}
return intersectionSet;
}
//差集
Set.prototype.differenceSet = function (otherSet) {
var differenceSet = new Set();
var values = this.values();
for(var i = 0; i < values.length;i ++){
if (!otherSet.has(values[i]));
{
differenceSet.add(values[i]);
}
}
return differenceSet;
}
//子集
Set.prototype.subset = function (otherSet) {
var values = otherSet.values();
for(var i = 0; i < values.length;i++){
if (!this.has(values[i])){
return false;
}
}
return true;
}
}
//
// var set = new Set();
// set.add('a');
// set.add('b');
// set.add('c');
// set.add('d');
// alert(set.add('c'));
// alert(set.values());
// alert(set.remove('c'));
// alert(set.remove('c'));
// alert(set.values());
// alert(set.clear());
// alert(set.values());
var set = new Set();
set.add('a');
set.add('b');
set.add('c');
var otherSet = new Set();
otherSet.add('1');
otherSet.add('2');
otherSet.add('3');
otherSet.add('a');
// var union = set.union(otherSet);
// alert(union.values());
// alert(set.intersection(otherSet).values());
// alert(set.differenceSet(otherSet).values());
var subS = new Set();
subS.add('a');
subS.add('b');
alert(set.subset(subS));
alert(otherSet.subset(subS));
</script>
</body>
</html>