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

本文深入探讨了集合的基本概念,包括唯一性、无序性,并详细介绍了集合的基本操作如并集、交集、补集等。同时,展示了如何通过JavaScript实现这些操作,并提供了实际操作演示,帮助读者理解和应用集合理论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合:唯一性,无序性;

基本结构:

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值