zoukankan      html  css  js  c++  java
  • JavaScript中自带Set集合类及模拟实现并集交集差集

    let set = new Set();
    
    function union(set1, set2) {   //set1与set2的并集
        let unionSet = new Set();
        set1.forEach(element => {
            unionSet.add(element);
        });
        set2.forEach(element => {
            unionSet.add(element);
        });
    
        return unionSet;
    }
    
    function intersection(set1, set2) {   //set1与set2的交集
        let intersectionSet = new Set();
        if (set1.size <= set2.size) {
            set1.forEach(x => {
                if (set2.has(x)) {
                    intersectionSet.add(x);
                }
            });
        } else {
            set2.forEach(x => {
                if (set1.has(x)) {
                    intersectionSet.add(x);
                }
            });
        }
        return intersectionSet;
    }
    
    function difference(set1, set2) {   //set1-set2 差集
        let differenceSet = new Set();
        set1.forEach(x => {
            if (set2.has(x)) {
                differenceSet.add(x);
            }
        });
        return differenceSet;
    }
    
    
    //测试用例
    set.add(1);
    console.log(set.values()); // outputs @Iterator
    console.log(set.has(1)); // outputs true
    console.log(set.size); // outputs 1
    
    set.add(2);
    console.log(set.values()); // outputs [1, 2]
    console.log(set.has(2)); // true
    console.log(set.size); // 2
    
    set.delete(1);
    console.log(set.values()); // outputs [2]
    
    set.delete(2);
    console.log(set.values()); // outputs []
    
    const setA = new Set();
    setA.add(1);
    setA.add(2);
    setA.add(3);
    
    const setB = new Set();
    setB.add(2);
    setB.add(3);
    setB.add(4);
    
    console.log(union(setA, setB));
    
    console.log(new Set([...setA, ...setB]));
    
    console.log(intersection(setA, setB));
    
    console.log(new Set([...setA].filter(x => setB.has(x))));
    
    console.log(difference(setA, setB));
    
    console.log(new Set([...setA].filter(x => !setB.has(x))));
  • 相关阅读:
    python 元类
    python中__init__()、__new__()、__call__()、__del__()用法
    python内置数据结构方法的时间复杂度
    时间复杂度和空间复杂度
    数据结构及算法(1)
    sys模块python
    python中的文本操作
    python 中的os模块
    python 几种不同的格式化输出
    【js】null 和 undefined的区别?
  • 原文地址:https://www.cnblogs.com/WP-WangPin/p/13936430.html
Copyright © 2011-2022 走看看