js版数据结构_05集合(2)

js版数据结构_05集合(2)

本篇博客知识点:

  • 实现集合的基本运算

写在前面:

集合在数学中是一个很重要的概念当然在计算机领域中也是非常重要

数据库就是它的一个典型应用

如:写一条sql的查询语句便可以指定获取的全部数据集合还是它的子集,也可以获取两张表上的共有数据(交集)等等

接下来要实现的运算

  • 并集
  • 交集
  • 差集
  • 子集

正题:基本运算的实现

1. 并集 A∪ B

定义:A∪ B = {x | x ∈ A ∪ ∈ B}
在这里插入图片描述
实现:

        //    并集
        function union(set01, set02) {
            let unionSet = new Set(); //用来装并集集合
            set01.value().forEach((val) => {
                unionSet.add(val);
            })
            set02.value().forEach((val) => {
                unionSet.add(val);
            })
            return unionSet;
        }

2. 交集 A∩B

定义:A∩B = {x | x ∈ A ∩ x ∈ B}
在这里插入图片描述
实现:

        // 交集
        function intersection(set01, set02) {
            let intersectionSet = new Set();
            let set01Values = set01.value();
            for (let i = 0; i < set01Values.length; i++) {
                if (set02.has(set01Values[i])) {
                    intersectionSet.add(set01Values[i])
                }
            }
            return intersectionSet;
        }
    

3. 差集 A - B

定义:A - B = {x | x ∈ A ∩ x ∉ B }
在这里插入图片描述实现:

       // 差集
        function difference(set01, set02) {
            let differenceSet = new Set();

            set01.value().forEach((val) => {
                if (!set02.has(val)) {
                    differenceSet.add(val);
                }
            })
            return differenceSet;
        }

4. 判断子集 A ⊆ B

定义:{x | ∀x ∈ A => x ∈ B}

在这里插入图片描述
实现:

       // 判断是否是某个集合的子集
        function isSubsetOf(set01, set02) {
            if (set01.size() > set02.size()) {
                return false;
            }
            // 迭代
            let flag = set01.value().every((val) => {
                if (!set02.has(val)) {
                    return false;
                }
                return true;
            });

            if (flag === false) {
                return false;
            } else {
                return true;
            }
        }

5. 部分测试代码

        let set03 = new Set();
        set03.add(1);
        console.log(union(set01, set02));
        console.log(intersection(set01, set02));
        console.log(difference(set01, set02));
        console.log(isSubsetOf(set01, set02));
        console.log(isSubsetOf(set03, set02));

结果图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41086511/article/details/105539464