• 数据结构学习集合


    集合是由一组无序且唯一(即不能重复)的项组成的数据结构,可以把集合想象成一个既没有重复元素,也没有顺序概念的数组。在数学中,集合是一组不同的对象(的集),并且有并集、交集、差集等基本操作。 ES6提供了Set对象用于表示集合,关于Set对象的基本操作可[移步于此](https://blog.86886.wang/posts/5b2324f88493c32a8e81fc99),接下来基于Set对象实现集合的扩展操作,即数学上的并集、交集、差集和子集 ### 集合扩展操作 #### 并集 对于给定的两个集合,返回一个包含两个集合中所有元素的新集合。 ![](https://cdn.86886.wang/blog/1539063081021.png) ```js let union = function (setA, setB) { let unionAb = new Set(); for (let x of setA) unionAb.add(x); for (let x of setB) unionAb.add(x); return unionAb; } ``` #### 交集 对于给定的两个集合,返回一个包含两个集合中共有元素的新集合。 ![](https://cdn.86886.wang/blog/1539063088260.png) ```js let intersection = function(setA, setB) { let intersectionSet = new Set(); for (let x of setA) { if (setB.has(x)) { intersectionSet.add(x); } } return intersectionSet; }; ``` #### 差集 对于给定的两个集合,返回一个包含所有存在于第一个集合且不存在于第二个集合的元素的新集合。 ![](https://cdn.86886.wang/blog/1539063100822.png) ```js let difference = function(setA, setB) { let differenceSet = new Set(); for (let x of setA) { if (!setB.has(x)) { differenceSet.add(x); } } return differenceSet; } ``` #### 子集 验证一个给定集合是否是另一集合的子集 ![](https://cdn.86886.wang/blog/1539063106789.png) ```js let subset = function(setA, setB){ if (setA.size > setB.size){ return false; } else { for(let item of setA.values()) { if (!setB.has(item)){ return false; } } return true; } }; ``` ```js let setA = new Set(); setA.add(1); setA.add(2); setA.add(3); let setB = new Set(); setB.add(2); setB.add(3); setB.add(4); console.log(union(setA, setB).values()); // SetIterator {1, 2, 3, 4} console.log(intersection(setA, setB).values()); // SetIterator {2, 3} console.log(difference(setA, setB).values()); // SetIterator {1} console.log(subset(setA, setB)); // false ```
    优秀文章首发于聚享小站,欢迎关注!
  • 相关阅读:
    文本PDG文件名构成
    关于文本PDG的字体
    Oracle 11G R2 在windows server 2008 64位安装时提示:无法在windows "开始"菜单或桌面上创建项
    GTONE上安装插件无法显示SecurityPrism菜单
    Centos系统下Lamp环境的快速搭建(超详细)
    Windows 10激活
    word如何让单页变横向
    redhat 6.x 上创建用户
    redhat下网络的配置
    Windows 10、Windows 2012 安装 Oracle 11g 报错:[INS-13001]环境不满足最低要求。
  • 原文地址:https://www.cnblogs.com/yesyes/p/15349369.html
Copyright © 2020-2023  润新知