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

 

你可能感兴趣的:(数据结构)