9.2 【集合】完善js类(并集/交集/差集/子集)

继续完善set类

let Set = require('./set.js');

class fullSet extends Set {
    // 并集
    union (otherSet) {
        let unionSet = new fullSet()
        let values = this.values()
        // 将本身元素注入新集合
        for (let i = 0; i < values.length; i++) {
            unionSet.add(values[i])
        }
        // console.log('第一次循环结束后unionSset的值:' + unionSet.values());
        // 将合并元素注入
        values = otherSet.values();
        for (let i = 0; i < values.length; i++) {
            unionSet.add(values[i])
        }
        // console.log('第二次循环结束后unionSset的值:' + unionSet.values());
        return unionSet
    }

    // 交集
    intersection (otherSet) {
        let intersectionSet = new fullSet()
        let values = this.values()
        let temp

        // if the otherSet has the same element, push the element to the new set
        for (let i = 0; i < values.length; i++) {
            (otherSet.has(values[i])) ? intersectionSet.add(values[i]): ''
        }
        return intersectionSet
    }

    // 差集
    difference (otherSet) {
        let differenceSet = new fullSet(),
            values = this.values(),
            temp

        for (let i = 0; i < values.length; i++) {
            otherSet.has(values[i])? '' : differenceSet.add(values[i])            
        }

        return differenceSet
    }

    // 判断是否为子集
    sub (otherSet) {
        let values = this.values()
        let judgement;

        for (let i = 0; i < values.length; i++) {
            judgement = otherSet.has(values[i])
            if (!judgement) {
               return false 
            }
        }
        return true
    }
}

let temp;
let a = new fullSet()
a.add(1)
a.add(2)
a.add(3)
a.add(4)
a.add(5)
let b = new fullSet()
b.add(2)
b.add(3)
b.add(4)
b.add(5)
b.add(6)
b.add(7)
b.add(8)

console.log('TEST1: union');
temp = a.union(b)
console.log(temp.values());

console.log('TEST2: intersection');
temp = a.intersection(b)
console.log(temp.values());

console.log('TEST3: difference');
temp = a.difference(b)
console.log(temp.values());

console.log('TEST4: subset');
temp = a
temp = a.sub(a)
console.log(temp)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容