zoukankan      html  css  js  c++  java
  • ES6的Set类是怎么实现的(集合) hui

    Set类就是数据结构中的集合

    Set类的基本操作的实现:

    function Set(){
                var items = {}
                var length = 0;
                //判断元素是否存在
                this.has = function(val){
                    return items.hasOwnProperty(val)
                }
                //增加操作
                this.add = function(val){
                    if(!this.has(val)){
                        items[val] = val;
                        length++;
                        return true;
                    }
                    return false;
                }
                // 删除操作
                this.remove = function(val){
                    if(this.has(val)){
                        delete items[val]
                        length-=1;
                        return true;                
                    }
                    return false;
                }
                // 清除
                this.clear = function(){
                    items = {};
                    length = 0
                    return true
                }
                //获取大小
                this.size = function(){
                    return length;
                }
                //获取属性
                this.values = function(){
                    return Object.keys(items);
                }
            }    
            var set = new Set()
            set.add(1);set.add(2);set.add(3);set.add('a')        

    其他操作 

    求并集:

                this.union = function(otherSet){
                    var unionSet = new Set();//存放结果
                    var values = this.values();
                    for(var i = 0;i<values.length;i++){
                        unionSet.add(values[i]);                //放入当前集合中的元素
                    }
                    values = otherSet.values();
                    for(var i = 0;i<values.length;i++){
                        unionSet.add(values[i])                   //放入另一个集合的元素
                    }
                    return unionSet;
                }

    交集:

    this.intersection = function(otherSet){
                    var intersectionSet = new Set();//存放结果
                    var values = this.values();
                    for(var i = 0;i<values.length;i++){
                        if(otherSet.has(values[i])){             //只放入两个集合共有的元素
                            intersectionSet.add(values[i])
                        }
                    }
                    return intersectionSet;
                }

    差集: 

             this.difference = function(otherSet){
                    var differenceSet = new Set();//存放结果
                    var values = this.values();
                    for(var i = 0;i<values.length;i++){
                        if(!otherSet.has(values[i])){          //只放入集合otherSet中没有的
                            differenceSet.add(values[i])
                        }
                    }
                    return differenceSet;
                }

  • 相关阅读:
    python之函数用法id(),了解即可
    python之函数用法locals()
    python之函数用法vars()
    python之函数用法execfile()
    python之函数用法isinstance()
    python之函数用法any()
    python之函数用法iter()
    python之函数用法file()
    python之函数用法bin()
    python之函数用法basestring
  • 原文地址:https://www.cnblogs.com/hui-fly/p/9459152.html
Copyright © 2011-2022 走看看