阅读全文需要 4 分钟。主要介绍对 ES6 中的 Set 集合方法的扩展。阅读本文后,你能创建出对 Set 方法扩展,并且结合下期内容,将其发布到 NPM 中。

往期回顾

一文了解 JavaScript 中的 Set(集合)

一文了解 JavaScript 中的 Set(集合)- 多种去重技巧

上两期介绍了 Set 的基本操作方法,Set 的去重和扩展等。

本期内容

本期对 Set 的常用功能进行扩展,文末给出完整源码。

为什么对简单的 Set 连续讲几期?这里我想解释一下。

很多朋友知道,假如对开源社区有贡献,会为自己面试加分不少。可是往往找不到突破口进行参与。

其实,为开源作贡献十分简单,发现项目或者框架有问题的,改正它;发现缺少的功能,补充它。

如果遇到问题,等待别人解决,其实就是将这样的一个机会让给了其他人。

从 Set 的第一期开始看,你会看到一个完整的开源贡献过程 ——

  • 了解现有功能的局限性
  • 产生优化功能的想法
  • 实际编码扩展 Set 的功能
  • 发布到 NPM 和 Github

这几期就是想通过这个简单的例子,不单单让大家了解到 Set 的基础知识,更是希望大家明白开源贡献没那么高不可攀,破除畏难情绪,踏出第一步。

下面是本期正文。

集合的基本操作

数学中集合的基本操作包括 ——

集合的关系

  • 空集
  • 子集
  • 真子集
  • 相等

集合的基本运算

  • 并集
  • 交集
  • 全集
  • 补集

针对集合的这些操作,我们使用 Set 进行对应的扩展。

空集

集合中不存在任何元素,即大小为 0。

因为我们是扩展 Set,所以可以在原型链上对其直接定义方法。

子集

如果集合 A 中任意一个元素都是集合 B 的元素,那么 A 是 B 的子集。

核心是遍历当前集合,如果当前集合中每个元素都在目标集合中,那么当前集合就是目标集合的子集。

真子集

如果集合 A 是集合 B 的子集,且集合 B 中至少有一个元素不属于 A,那么 A 是 B 的真子集。

这里有一些小技巧,根据真子集的定义,真子集会比目标集合小。所以通过先比对大小,再判断是否属于子集,清晰易懂。

同样的技巧也应用在判断集合相等中 ——

相等

两个集合的元素完全相同。

集合的大小相等,且为子集关系,则两个集合相等。

并集

包含给定所有集合中的元素。所以只需遍历所有集合,将其元素合并到一个集合中。

交集

由所有属于给定集合的共同元素组成。

这里也存在一定技巧,先获取最大的集合,然后通过判断最大集合中的元素是否同时存在于其它集合中来实现。

结语

全集和补集留待大家思考,源码可私信「集合扩展」获取。

下期内容就跟大家将这个扩展发布到 NPM 中。

这段时间待业在家,主要做一些前端的分享,毕竟最熟悉是前端这块。个人的技术栈包括 Python,Angular,JavaScript,Docker 等。 如果你对哪方面的知识感兴趣或有疑问,欢迎一起讨论。

最后的最后,点收藏的同时不妨点个赞吧:)

set集合判断集合中是否有无元素_一文了解 JavaScript 中的 Set(集合)- 对 Set 的扩展...相关推荐

  1. set集合判断集合中是否有无元素_集合 (Set) | 一山不容二虎的 Python 数据类型

    点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享! 前言 Hi,大家好,我是可乐, 今天 ...

  2. pta数据结构实验在数组中查找指定元素_如何从一个数组中查找指定的元素,并返回这个元素在数组中的位置...

    展开全部 和Vector都是使用Objec的数组形式来存储的.当你向这两种类型中增加元素的时候,如果元素的数目超出e68a84e8a2ad62616964757a686964616f313332646 ...

  3. set集合判断集合中是否有无元素_第八章 集合

    1. Java集合体系结构(List.Set.Collection.Map的区别和联系) Collection 接口存储一组不唯一,无序的对象 List 接口存储一组不唯一,有序(插入顺序)的对象 S ...

  4. 创建函数查找上级_一文秒懂JavaScript中对象的7种创建方式

    1.工厂模式 javascript 代码 工厂模式:能根据接受的参数来创建出一个person对象.也可以无数次的调用这个函数,每次都会返回一个包含3个属性和1个方法的对象. 工厂模式虽然解决了创建多个 ...

  5. 中文件编码方式_一文解开java中字符串编码的小秘密

    简介:在本文中你将了解到Unicode和UTF-8,UTF-16,UTF-32的关系,同时你还会了解变种UTF-8,并且探讨一下UTF-8和变种UTF-8在java中的应用. Unicode的发展史 ...

  6. set集合判断集合中是否有无元素_Python入门教程笔记(五)集合(set)及函数

    三九.什么是set 在前面,我们学习了dict,知道dict的key是不重复的,当我们往dict里添加一个相同key的value时,新的value将会覆盖旧的value. 有的时候,我们只想要 dic ...

  7. set集合判断集合中是否有无元素_Python基础学习笔记(五)集合与字典

    本节知识大纲: 集合 字典 一.Set 集合的概念 1. set 集合的性质 set 集合是一组无序的且不能重复的集合,打印 set 集合时会自动消除重复的元素项: set 集合用大括号表示: set ...

  8. python判断数组中是否存在重复元素_利用python查看数组中的所有元素是否相同

    不知道大家有没有过这种经历,就是想要判断两个数组运算后得到的新数组中的各个元素值是否相同.这里给出一种使用np.unique()的方法,代码如下:cbc免费资源网 import numpy as np ...

  9. 编程中什么叫做元素什么叫帧_R编程中的数据帧

    编程中什么叫做元素什么叫帧 Let's continue in our R programming tutorial series, and understand data frames in R. ...

最新文章

  1. 日本精密减速器,到底牛在哪?
  2. git学习(四):理解git暂存区(stage)
  3. pytorch torch.randn
  4. 文件上传控件 自定义样式
  5. testservice小项目总结
  6. Automatic Judge
  7. 金蝶KIS专业版二次开发探索
  8. 小米手机 VS 阿里手机,阿里输在512MB内存,华为Honor只有电池容量跟小米差不多...
  9. 云队友丨任正非内部演讲:星光不问赶路人
  10. ios 获取沙盒文件名_iOS之沙盒路径
  11. 1_数据分析应掌握的Python基础
  12. 在外文paper写作中,英文杂志以及英文会议缩写名称怎么查找
  13. c语言函数变量的作用域与生存期
  14. 跟小博老师一起学习数据库 ——索引
  15. 软件构造——浅谈正则表达式
  16. python量化 双均线策略(金叉死叉)
  17. 瓶子换水问题java_空瓶子换水问题
  18. 宾夕法尼亚大学刘玲洁课题组招募CG、CV方向博士/博士后
  19. Code::Blocks使用教程
  20. 标准MIDI文件格式规范。 1.1(机翻)

热门文章

  1. php curl获取登陆cookie,PHP curl 模拟登陆 获取cookie
  2. php地址转换成经纬度,百度地图 获取地址转换为经纬度
  3. mysql中什么叫临时表_MySQL中使用临时表需要注意哪些?
  4. oracle数据库安装跳坑
  5. Android之Notification初识
  6. just for rest~
  7. centos中文目录换成英文目录
  8. maya python 创建求_如何使用python在Maya中创建列表
  9. Web前端书单从HTML到JS到AJAX到HTTP从框架到全栈
  10. [转帖]什么是α射线、β射线、γ射线