function Set(){
            this.items={};
        }

        Set.prototype={
            add:function(value){
                if(!this.has(value)){
                    this.items[value] = value;
                    return true;
                }
                return false;
            },
            remove:function(value){
                if(this.has(value)){
                    delete this.items[value];
                    return true;
                }
                return false;

            },
            has:function(value){
                //return value in this.items;
                return this.items.hasOwnProperty(value);
            },
            clear:function(){
                this.items = {};
            },
            size:function(){
                return Object.keys[this.items].length;
                // var count = 0;
                // for(var prop in this.items){
                //     if(this.items.hasOwnProperty(prop)){
                //         ++count;
                //     }
                // }
                // return count;
            },
            values:function(){
                return Object.keys(this.items);
            },
            //并集
            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;
            },
            //交集
            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;
            },
            //差集
            difference:function(otherSet){
                var differenceSet = new Set();
                var values = this.values();
                for(var i=0;i<values.length;i++){
                    if(!otherSet.has(values[i])){
                        differenceSet.add(values[i]);
                    }
                }
                return differenceSet;
            },
            //子集
            subset:function(otherSet){
                if(this.size()>otherSet.size()){
                    return false;
                } else {
                    var values = this.values();
                    for(var i=0;i<values.length;i++){
                        if(!otherSet.has(values[i])){
                            return false;
                        }
                    }
                    return true;
                }

            }
        };

 

posted on 2018-01-23 22:54  kerryk  阅读(165)  评论(0)    收藏  举报