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

316 阅读1分钟

项目地址:github.com/bulang/ds2a

ES6中有提供Set对象类型,基础的接口不做演示,演示一下集合的相关计算

代码清单:isSuperset(set, subset)方法实现

功能:判断subset是否为set的子集;
子集:subset集合里面有的元素,set集合全都有;

 // 判断是否为子集
isSuperset(set, subset){
    for(let element of subset){
        if(!set.has(element)){
            return false;
        }
    }
    return true;
}

代码清单:union(setA, setB)方法实现

功能:求setA、setB集合的并集;
并集:把两个集合合并为一个集合,数学上记作setA ∪ setB

// 并集;
union(setA, setB){
    let _union = new Set(setA);
    for(let element of setB){
        _union.add(element);
    }
    return _union;
}

代码清单:intersection(setA, setB)方法实现

功能:求setA、setB集合的交集; 交集:由setA、setB两个集合共有的元素组成的集合为这两个集合的交集,数学上记作setA ∩ setB

// 交集
intersection(setA, setB){
    let _intersection = new Set();
    for(let element of setB){
        if(setA.has(element)){
            _intersection.add(element);
        }
    }
    return _intersection;
}

代码清单:difference(setA, setB)方法实现

功能:求setA、setB集合的差集;
差集:setBsetA中的差集为属于setA但是不属于setB的所有元素的集合,在数学上记作:setA\setBsetA-setB

// 差集
difference(setA, setB){
    let _difference = new Set(setA);
    for(let element of setA){
        if(setB.has(element)){
            _difference.delete(element);
        }
    }
    return _difference;
}    

代码清单:symmetricDifference(setA, setB)方法实现

功能:求setA、setB集合的对称差集 对称差集:setA、setB两个集合中不属于setA ∩ setB的所有元素的集合,数学上记作setA ∆ setB

// 对称差
symmetricDifference(setA, setB){
    let _symmetric = new Set(setA);
    for(let element of setB){
        if(_symmetric.has(element)){
            _symmetric.delete(element);
        }else{
            _symmetric.add(element);
        }
    }
    return _symmetric;
}