• 数据结构----集合


    /*
    * 数据结构——集合
    * 集合(set)是一种包含不同元素的数据结构。集合中的元素称为成员。两个特点:1、成员是无序的  2、集合不能存在相同的成员
    *
    * 定义:
    *       1、不包含任何成员的集合称为空集,全集则是包含一切可能成员的集合
    *       2、如果两个集合的成员完全相同,则称两个集合相等
    *       3、如果一个集合中所有的成员都属于另外一个集合,则前一集合称为后一集合的子集
    * */
    function add(data) {
        if (this.dataStore.indexOf(data) === -1) {
            this.dataStore.push(data);
            return true;
        }
        return false;
    }
    function remove(data) {
        var index = this.dataStore.indexOf(data);
        if (index > -1) {
            this.dataStore.splice(index,1);
            return true;
        }
        return false;
    }
    function show() {
        console.log(this.dataStore);
    }
    function size() {
        return this.dataStore.length;
    }
    function contains(data) {
        return this.dataStore.indexOf(data) > -1;
    }
    //并集操作
    function union(set) {
        var tempSet = new Set();
        for (var i = 0 ; i < this.dataStore.length; i++) {
            tempSet.add(this.dataStore[i]);
        }
        for(var j = 0; j < set.dataStore.length; j++) {
            if (!tempSet.contains(set.dataStore[j])) {
                tempSet.add(set.dataStore[j])
            }
        }
        return tempSet;
    }
    //交集操作 a.intersect(b) b相对a的交集
    function intersect(set) {
        var tempSet = new Set();
        for(var i = 0 ; i < set.dataStore.length; i++) {
            if (this.contains(set.dataStore[i])) {
                tempSet.add(set.dataStore[i])
            }
        }
        return tempSet;
    }
    //是否是子集判断 a.subset(b) b是否是a的子集
    function subset(set) {
       if (this.size() < set.size()) {
           return false;
       }
       for(var i = 0; i < set.size(); i++) {
           if (!this.contains(set.dataStore[i])) {
               return false;
           }
       }
       return true;
    }
    //补集操作 a.difference(b)  b相对于a的补集
    function difference(set) {
        var tempSet = new Set();
        for(var i = 0; i< this.size();i++) {
            if (!set.contains(this.dataStore[i])) {
                tempSet.add(this.dataStore[i]);
            }
        }
        return tempSet;
    }
    function Set() {
        this.dataStore = [];
        this.add = add;
        this.remove = remove;
        this.size = size;
        this.contains = contains;
        this.union = union;
        this.intersect = intersect;
        this.subset = subset;
        this.difference = difference;
        this.show = show;
    }
    
    var s = new Set();
    
    s.add("1");
    s.add("2");
    s.add("3");
    
    var dmp = new Set();
    dmp.add("1");
    dmp.add("4");
    dmp.add("5");
    dmp.add("6");
    
    var c = s.union(dmp);
    
    console.log(c);
    
    var i = s.intersect(dmp);
    
    console.log(i);
    
    console.log(s.subset(i));
    
    console.log(s.difference(i))
  • 相关阅读:
    SQL中的count()函数内加条件
    SpringBoot+Vue实现第三方微博登录(二)
    SpringBoot+Vue实现第三方百度登录(一)
    Javascript unescape 的 Sql Server 实现
    DataGridView 行内编辑探索
    JQuery Offset实验与应用
    垃圾代码是这样练成的......
    关于前天发现的可能是VS2005服务器资源管理器的bug ...
    调试
    可怕的误导,来自(iHeavy Inc.公司的高级顾问Sean Hull的谬论... )
  • 原文地址:https://www.cnblogs.com/yunnex-xw/p/9871646.html
Copyright © 2020-2023  润新知