集合
集合是一种包含不同元素的数据结构。集合中的元素称为成员。集合中的成员是无序的,集合中不允许相同元素存在。
集合是由一组无序但是彼此之间有相关性的成员构成的,每个成员在集合中只能出现一次。
集合的定义
- 不包含任何成员的集合称为空集,全集则是包含一切可能成员的集合。
- 如果两个集合的成员完全相同,则称这两个集合相等。
- 如果一个集合中的所有元素是全部包含于另一个集合,那么前一个集合是后一个集合的子集。
对集合的操作
- 并集:将两个集合的成员进行合并,形成一个集合
- 交集:两个集合中共同存在的成员组成一个新的集合
- 补集:属于一个集合而不属于另一个集合的成员组成的集合
方法
- add:向集合中添加成员
- remove:从集合中删除成员
- show:显示集合中的成员
set类的实现
function Set(){
this.dataStore = [];
this.size = 0;
}
// 工具函数
Set.prototype.indexOf = function (element) {
return this.dataStore.indexOf(element);
}
Set.prototype.add = function (element) {
if(this.indexOf(element) !== -1){
return false;
} else {
this.dataStore.push(element);
}
}
Set.prototype.remove = function (element) {
let index = this.indexOf(element);
if(index !== -1){
this.dataStore.splice(index, 1);
} else {
return false;
}
}
Set.prototype.show = function () {
return this.dataStore.toString();
}
// 交集
Set.prototype.union = function (set) {
let unionSet = new Set();
let tempStore = set.dataStore;
for(let i = 0; i < this.dataStore.length; i++){
unionSet.dataStore.concat(set.dataStore.filter((ele) => {
return ele === this.dataStore[i];
}));
}
return unionSet;
}
// 并集
Set.prototype.interset = function (set) {
let intersetSet = new Set();
let tempStore = set.dataStore;
for(let i = 0; i < this.dataStore.length; i++){
tempStore = tempStore.filter((ele) => {
return ele !== this.dataStore[i];
});
}
intersetSet.dataStore = intersetSet.dataStore.concat(this.dataStore, tempStore);
return intersetSet;
}
// 补集
Set.prototype.diference = function (set){
let difSet = new Set();
for(let i = 0; i < this.dataStore.length; i++){
if(set.dataStore.every((ele) => {
return ele !== this.dataStore[i];
})){
difSet.dataStore.push(this.dataStore[i]);
}
}
return difSet;
}