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))));
  • 相关阅读:
    ALV_TREE(二:cl_gui_simple_tree…
    ALV_TREE(一:cl_gui_alv_tree_si…
    SQLPlus命令详细说明
    PL/SQL中,declare定义变量和variable定义变量的区别?
    Oracle 多表视图更新(待看完触发器后再来看)
    Oracle 函数 Translate 的用法
    Merge into
    savepoint(回退点)
    Oracle之分页查询
    对于package中全局变量的一点点初级理解
  • 原文地址:https://www.cnblogs.com/WP-WangPin/p/13936430.html
Copyright © 2011-2022 走看看