美文网首页
学习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—集合

    集合 集合是由一组无序且唯一的项组成的 6.1 创建一个集合 6.2 集合操作 并集,交集,差集,子集

  • 数据结构与算法

    参考链接:算法 数据结构与算法 iOS数据结构 和 算法 上 算法 1、数据结构: 集合结构: 线性结构: 树形结...

  • js数据结构和算法

    js数据结构和算法学习(一) 本系列内容来源《学习Javascipt数据结构与算法》,源文件使用es5代码编写,在...

  • JS数据结构与算法-集合

    定义 集合是由一组无序且唯一(即不能重复)的项组成。可以把集合想象成一个既没有重复元素,也没有顺序概念的数组。 创...

  • js数据结构与算法_集合

    集合 集合是由一组无序且唯一(即不能重复)的项组成的。这个数据结构使用了与有限集合相同的数学概念,但应用在计算机科...

  • 数据结构与算法(02):如何抓中重点,系统高效地学习数据结构与算

    原文:数据结构与算法(02):如何抓中重点,系统高效地学习数据结构与算法? 前言 刚开始学习数据结构与算法的时候不...

  • 数据结构与算法

    数据结构与算法(详细资料暂没查询到) 目的 数据结构:是将有特定关系的数据元素的集合数据结构与算法是为了做程序设计...

  • 如何学习数据结构与算法

    算法学习经验 推荐: 入门: 数据结构启蒙:《数据结构与算法分析——C 语言描述》 算法启蒙:《算法设计与分析基础...

  • 工作消失而面试却长存的算法与数据结构

    工作消失而面试却长存的算法与数据结构: 优秀的算法和数据结构被封装到了Java的集合框架之中 数据结构考点: 数组...

  • 链表数据结构js实现

    最近再看学习js数据结构与算法这本书,根据书上的例子和方法实现了一下。记录如下:

网友评论

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

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