Set类的实现

80 阅读1分钟

1、集合的概念

集合是由一组无序且唯一(不重复)的项组成

2、创建集合类

使用对象而不是数组来表示集合,原理:

Javascript的对象不允许一个键指向两个不同的属性,保证了集合里的元素都是唯一的

3、模拟ES6实现相同的Set类

  • add(element):向集合添加一个新元素
  • delete(element):从集合移除一个元素
  • has(element):如果元素在集合中,返回true,否则返回false
  • clear():移除集合中的所有元素
  • size():返回集合所包含的元素的数量。它与数组的length属性类似
  • values():返回一个包含集合中所有值(元素)的数组
class MySet{
    constructor(){
        this.items = {}
    }
    add(element){
        if(!this.has(element)){
            this.items[element] = element
            return true
        }
        return false
    }
    delete(element){
        if(this.has(element)){
            delete this.items[element]
            return true
        }
        return false
        
    }
    has(element){
        //return element in items;
        return Object.prototype.hasOwnProperty.call(this.items,element)
    }
    clear(){
        this.items = {}
    }
    size(){
        return Object.keys(this.items).length
    }
    values(){
        return Object.values(this.items)
    }
}

4、测试截图

image.png

本文参考:《学习Javascript数据结构与算法第3版》