javascript集合

function Set() {
            this.items = {};
            Set.prototype.add = function(value) {
                // 判断当前集合是否包含某个元素
                if(this.has(value)) {
                    return false;
                }
                this.items[value] = value;
                return true;
            }

            Set.prototype.has = function(value) {
               return this.items.hasOwnProperty(value) 
            }

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

            
            Set.prototype.clear = function() {
               return this.items = {};
            }

            Set.prototype.size = function() {
                return Object.keys(this.items).length;
            }
            Set.prototype.values = function() {
                return Object.keys(this.items);
            }

            Set.prototype.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;

            }
            Set.prototype.intersection = function(otherSet) {
                var intersectionSet = new Set();
                var values = this.values();
                for(var i =0;i<values.length;i++){
                    var item = values[i];
                    if(otherSet.has(item)) {
                        intersectionSet.add(item);
                    }
                }
                return intersectionSet;
            }
            // 差集
            Set.prototype.difference = function(otherSet) {
                // 创建新的集合
                var differenceSet = new Set();
                var values = this.values();
                for(var i =0;i<values.length;i++){
                    var item = values[i];
                    if(!otherSet.has(item)) {
                        differenceSet.add(item);
                    }
                }
                return differenceSet;
            }
            // 子集
            Set.prototype.subset = function(otherSet) {
                // 创建新的集合
                var values = this.values();
                for(var i =0;i<values.length;i++){
                    var item = values[i];
                    if(!otherSet.has(item)) {
                       return false;
                    } else {
                        return true;
                    }
                }
            }

        }

        var set = new Set();
        set.add("abc");
        set.add("bcd");
        set.add("cde");
       // alert(set.values());
      // alert(set.remove("bcd"));
      //alert(set.has("bcd"));

       var newSet = new Set();
       newSet.add('bcd');
    //    newSet.add('ddd');

    //    var unionSet = set.union(newSet);
    //    alert(unionSet.values());

     //  var intersectionSet = set.intersection(newSet);
    //    var differenceSet = set.difference(newSet);
    //    alert(differenceSet.values());

    var subset = newSet.subset(set);
    alert(subset);

 

posted @ 2020-06-14 21:10  bradleydan  阅读(56)  评论(0)    收藏  举报