Javascript 集合

集合的特点是不包含重复元素,集合的元素通常无顺序之分。在系统编程中集合很常用,但是并非所有语言都原生支持集合。
集合的三条理论:

  • 不包含任何元素的集合为空集
  • 两个集合包含的元素完全一样,则它们相等
  • 集合A是集合B的子集,如果A的所有元素都在B中出现
    集合的三种基本操作:
  • Union,两个集合的并
  • Intersection,两个集合的交
  • Difference,两个集合的差

集合的js实现:

function Set() {
    this.dataStore = [ ];
    // operations
    this.add = add;
    this.remove = remove;
    this.size = size;
    this.union = union;
    this.intersect = intersect;
    this.subset = subset;
    this.difference = difference;
    this.show = show;
}

function add(data) {
    if (this.dataStore.indexOf(data) < 0) {
        this.dataStore.push(data);
        return true;
    }
    else {
        return false;
    }
}

function remove(data) {
    var pos = this.dataStore.indexOf(data);
    if (pos > -1) {
        this.dataStore.splice(pos, 1);
        return true;
    }
    else {
        return false;
    }
}

function show() {
    return this.dataStore;
}

function contains(data) {
    return this.dataStore.indexOf(data) > -1 ;
}

function union(set) {
    var tmp = new Set();
    for  each (var e in this.dataStore) {
        tmp.add(e);
    }
    for each (var e in set) {
        if (!tmp.contains(e)) {
            tmp.push(e);
        }
    }
    return tmp;
}

function subset(set) {
    if (this.size() > set.size()) {
        return false;
    }
    else {
        for each (var e in this.dataStore) {
            if (!set.contains(e)) {
                return false;
            }
        }
    }
    return true;
}

function size() {
    return this.dataStore.length;
}
// 返回 this - set
function difference(set) {
    var tmp = new Set();
    for each (var e1 in this.dataStore) {
        if (!set.contains(e1)) tmp.add(e1);
    }
    return tmp;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map;两者的区别: 1、Col...
    程序员欧阳阅读 11,803评论 2 61
  • 存个档,万一哪天再有人问起呢~ 父母阅读的部分育儿类书籍推荐: 1.心理类 《孩子,挑战》:多子女家庭问题&实战解...
    牛牛的Annie阅读 916评论 1 3
  • 文/静话心是 不知从何时起我们便习惯了目送和告别 站在站台上拥抱和挥手 没有过分的伤感 多了一份从容和期待 或许人...
    静话心是阅读 198评论 4 12
  • …… 我的到来令袁卫红惊喜不已。 我们尽情畅谈着分别以后发生那些事:她父母要求她嫁人,她的哥哥嫂子...
    冒牌文人阅读 562评论 0 0
  • 渐渐地我习惯了初中生活,跟班上的同学处的也越来越好,更开心的是,我凭借着自己的努力,当上了我们班主任的...
    宗博阅读 278评论 0 0

友情链接更多精彩内容