集合及集合操作

224 阅读3分钟

集合及集合操作

集合是由一组无序且唯一(即不能重复)的项组成的。这个数据结构使用了与有限集合相同 的数学概念,但应用在计算机科学的数据结构中。

在数学中,集合有并集,交集,差集,补集等基本操作。这里我们会简单学习一下

创建一个集合

创建集合非常简单,只要生命一个Set类及其常用的属性和方法即可。

集合的常用属性及方法有以下几个:

  • add(value):向集合添加一个新的项。
  • remove(value):从集合移除一个值。
  • has(value):如果值在集合中,返回true,否则返回false。
  • clear():移除集合中的所有项。
  • size():返回集合所包含元素的数量。与数组的length属性类似。
  • values():返回一个包含集合中所有值的数组。

具体代码


class Set {
  items:Object = {}
  
  add(item){
    if (!this.has(item)){ 
      items[value] = value; 
      return true; 
    } 
    return false;
  }
  remove(item){
    if(this.has(item)){
      delete this.items[item]
      return true
    }
    return false
  }
  has(item){
    return this.items.hasOwnProperty(item);
  }
  clear(){
    this.items ={};
  }
  size(){
    return Object.keys(this.items).length;
  }
  values(){
    return Object.keys(this.items);
  }

}

实现并集、交集、差集、子集。

并集 的数学概念,集合A和B的并集,表示为A∪B,定义如下:A∪B = { x | x ∈ A∨x ∈ B }。下面是如何实现并集操作。

union(otherSet){
  let unionSet = new Set();
  let values =this.values();
  for(let i=0;i<values.length;i++){
    unionSet.add(values[i])
  }
  let otherValues = otherSet.values();
  for(let i=0;i<otherValues.length;i++){
    unionSet.add(otherValues[i])
  }
  return unionSet;
}

交集的数学概念,集合A和B的交集,表示为A∩B,定义如下: A∩B = { x | x ∈ A∧x ∈ B }。下面是代码实现:

intersection (otherSet){
  let intersection = new Set();
  let values = this.values();
  for(let i=0;i<values.length;i++){
    if(otherSet.had(values[i])){
      intersction.add(values[i])
    }
  }
  return intersection;
}

差集的数学概念,集合A和B的差集,表示为AB,定义如下: A-B = { x | x ∈ A 且 x 不属于B }。下面是代码实现:


diff(otherSet){
  let diffs = new Set();
  let values = this.values();
  for(let i=0;i<values.length;i++){
    if(!otherSet.had(values[i])){
      diffs.add(values[i])
    }
  }
  return diffs;
}

最后一个集合操作是子集。子集的数学概念,集合A是B的子集(或集合B包含 了A),表示为A⊆B,定义如下: ∀x { x ∈ A → x ∈ B }。代码实现如下:

subSet(otherSet){
  if (this.size() > otherSet.size()){
    return false;
  }else{
    let values = this.values();
    for(let i=0;i<values.length;i++){
      if(!otherSet.had(values[i])){
        return false;
      }
    }
    return true;
  }
}

总结

学习了如何去实现一个集合类,以及如何实现集合类常用的属性和方法。熟悉了集合四种操作。

最后

  1. 动一动您的小手,「点个赞吧」
  2. 都看到这里了,不妨 「加个关注」
javascript基础知识总结
javascript基础知识总结