js:数据结构笔记8--集合

集合:唯一性,无序性;

基本结构:

 function Set () {
   this.dataStore = [];
   this.add = add;
   this.remove = remove;
   this.contains =contains;
   this.show = show; 
 }
 function contains(data) {
  var pos = this.dataStore.indexOf(data);
  if(pos > -1) {
    return true;
  } else {
    return false;
  }
 }
 function add(data) {
   var pos = this.dataStore.indexOf(data);
   if( pos < 0) {
     this.dataStore.push(data);
     return true;
   } else {
     return false;
   }
 }
 function remove(data) {
   var pos = this.dataStore.indexOf(data);
   if(pos > -1) {
     this.dataStore.splice(pos,1);
     return true;
   } else {
     return false;
   }
 }
 function show() {
   console.log(this.dataStore);
 }

操作:demo

 集合的基本操作:并集,交集,补集;

并集:

新增:
 function union(set) {
    var tempSet = new Set();
    for(var i = 0; i < this.dataStore.length; ++i) {
      tempSet.add(this.dataStore[i]);
    }
    for(var i = 0; i < set.dataStore.length; ++i) {
      var setData = set.dataStore[i];
      if(!tempSet.contains(setData)) {
        tempSet.dataStore.push(setData);
      }
    }
    return tempSet;
 }

操作: demo;

交集:

新增:
 function intersect(set) {
  var tempSet = new Set();
  for(var i = 0; i < this.dataStore.length; ++i) {
    var thisData = this.dataStore[i];
    if(set.contains(thisData)) {
      tempSet.add(thisData);
    }
  }
  return tempSet;
 }

操作: demo;

 补集:

新增:

 function difference(set) {
  var tempSet = new Set();
  for(var i = 0; i < this.dataStore.length; ++i) {
    var thisData = this.dataStore[i];
    if(!set.contains(thisData)) {
      tempSet.add(thisData);
    }
  }
  return tempSet;
 }

父集判断:

新增:
 function size() {
  return this.dataStore.length;
 }
 function subset(set) {
   if(this.size() > set.size()) {
      return false;
   } else {
    for(var i = 0; i < this.dataStore.length; ++i) {
      var thisData = this.dataStore[i];
      if(!set.contains(thisData)) {
        return false;
      }
    }
   }
   return true;
 }

 操作:demo

原文地址:https://www.cnblogs.com/jinkspeng/p/4032022.html