美文网首页
学习js数据结构与算法4—集合

学习js数据结构与算法4—集合

作者: 陈左夕 | 来源:发表于2018-03-22 17:18 被阅读0次

    集合

    集合是由一组无序且唯一的项组成的

    6.1 创建一个集合

        function Set() {
            var items = {};
            /* 
                add(value):向集合添加一个新的项
                removeremove(value):从集合中移除一个值
                has(value):如果值在集合中存在,返回true,否则false
                clear(): 移除集合里所有的项
                size():返回集合所包含元素的数量
                values():返回一个包含集合中所有值的数组
            */
        
            // has(value)方法
            this.has = function (value) {
                return items.hasOwnProperty(value);
            };
        
            // add(value)方法
            this.add = function (value) {
                if (!this.has(value)) {
                    items[value] = value;
                    return true;
                }
                return false;
            };
            // remove(value)方法
            this.remove = function (value) {
                if (this.has(value)) {
                    delete items[value];
                    return true;
                }
                return false;
            };
            // clear()方法
            this.clear = function () {
                items = {};
            };
            // size()方法
            this.size = function () {
                return Object.keys(items).length;
            };
            // values()方法
            this.values = function () {
                return Object.keys(items);
            };
            
        }
        
        // 使用Set类
        var set = new Set();
        set.add(1);
        console.log(set.values());
        console.log(set.has(1));
        console.log(set.size());
        set.add(2);
        console.log(set.values());
        console.log(set.has(2));
        console.log(set.size());
        set.remove(1);
        console.log(set.values());
        set.remove(2);
        console.log(set.values());
    

    6.2 集合操作

    并集,交集,差集,子集

        // 并集
        this.union = function (other) {
            var union = new Set();
    
            var values = this.values();
            for (var i = 0; i < values.length; i++) {
                union.add(values[i]);
            }
    
            values = other.values();
            for (var i = 0; i < values.length; i++) {
                union.add(values[i]);
            }
    
            return union;
        };
    
        // 交集
        this.intersection = function (other) {
            var section = new Set();
    
            var values = this.values();
            for (var i = 0; i < values.length; i++) {
                if (other.has(values[i])) {
                    section.add(values[i]);
                }
            }
    
            return section;
        };
    
        // 差集
        this.difference = function (other) {
            var difference = new Set();
    
            var values = this.values();
            for (var i = 0; i < values.length; i++) {
                if (!other.has(values[i])) {
                    difference.add(values[i]);
                }
            }
            return difference;
        };
    
        // 子集
        this.subset = function (other) {
    
            if (this.size() > other.size()) {
                return false;
            } else {
                var values = this.values();
                for (var i = 0; i < values.length; i++) {
                    if (!other.has(values[i])) {
                        return false;
                    }
                }
    
                return true;
            }
        };
    

    相关文章

      网友评论

          本文标题:学习js数据结构与算法4—集合

          本文链接:https://www.haomeiwen.com/subject/ubzaqftx.html