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

e4e5f9ea26373453f2e12e9bd1ed510b.png

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

往期回顾

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

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

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

本期内容

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

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

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

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

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

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

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

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

下面是本期正文。

集合的基本操作

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

集合的关系

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

集合的基本运算

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

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

空集

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

66856e2dffd095d1d679162d94b981bd.png

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

子集

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

d95d807a8d4107c759aa048f0bd55a39.png

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

真子集

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

b0aef489d82de6f5559aca28b7a87c25.png

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

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

相等

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

7c65992441c35202f536638275797fdd.png

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

并集

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

e6e349d05c69f5c1c4b39f5300e878d7.png

交集

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

38015964e6516bba248c74b7039db00f.png

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

结语

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言大数的加减运算,求用C编个大数加减法运算程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼只写过加法的&#xff0c;杭电的A B Problem (II)(AC)&#xff1a;#include #include #include #define N 3000int main(void){int n, i, j, k, p, q, a, b, t, up;char s[N];scanf("%d ", &n);for (i 0; i < n…

从面试官角度告诉大家如何准备项目方面的描述

之前写了篇博文&#xff0c;你的简历能帮你争取到面试机会吗&#xff0c;反响不错&#xff0c;也承蒙管理员抬爱&#xff0c;放在首页&#xff0c;为了答谢大家&#xff0c;在这篇博文里&#xff0c;我来分享些如何准备和叙述项目经验的技巧。 本文的内容是根据java web轻量级开…

站怎么点都是一样_老鼠被卡在轮胎里,像是被点了穴道一样:这可怎么办才好?...

从小就被灌输了一个思想&#xff1a;猫和老鼠是天敌&#xff0c;也没有想过这样根深蒂固的思想有一天会发生变化。直到有天偶然看到猫咪被老鼠吓到四处乱窜才觉得这一定理并非是永恒不变的&#xff0c;毕竟生活总是充满着惊喜与惊吓。来看看下面这个小故事&#xff0c;感受一下…

-3.14c语言四舍五入,(4.14)向上取整、向下取整、四舍五入取整的实例

【四舍五入取整截取】select round(54.56,0) 【向下取整截取】SELECT FLOOR(54.56) 【向上取整截取】SELECT CEILING(13.15)以下转自&#xff1a;http://www.2cto.com/database/201209/156996.html--MSSQL取整函数的使用--两个整数相除将截断小数部分select 3/4,4/3,5/3--结果…

sql空字符串判断函数_access常用的内置函数

&#xfeff;&#xfeff;新朋友点“Office交流网“蓝字关注我们Access提供了几种类型的函数&#xff0c;可将这些函数分为以下几类&#xff1a;转换&#xff1a;把一个值转换为另一个。日期/时间&#xff1a;返回日期和/或时间值。判断检查&#xff1a;判断是否正确算术计算&a…

实验吧—Web——WP之 Guess Next Session

打开链接&#xff0c;他有给出查看原码的按钮&#xff0c;那么我们打开看看 在这个里面&#xff0c;如果GET的值等于session的就会给出flag 那么我们进行抓包改包 在输入框内随意输入一个值然后抓包 将password的值删去&#xff0c;并且将cookie后面的PHPsessid的值也删去&…

简易贪吃蛇c语言贴吧,熬书几个月,终于编出简易的贪吃蛇了,VS2013

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include#include#define X 30#define Y 15void guozi(int *x, int *y);int main(void){char map[X][Y];int x;int y;//横纵坐标int i;int j;//标记蛇头int p, q;//标记蛇尾int t, d;//寻找蛇尾int n 4;//蛇的长度…

linux命令行提示符居中,linux命令行学习(54):修改提示符

提示符由环境变量PS1决定&#xff0c;所以&#xff0c;修改提示符就是修PS1的值。一、保存PS1原来的值以及恢复原值为了防止麻烦&#xff0c;在修改PS1的值之前&#xff0c;可以先将PS1的值保存起来&#xff0c;以备以后恢复。我们建立一个环境变量ps1执行命令&#xff1a;ps1&…

flask(精讲)

Flask 一&#xff1a;web框架Django和Flask本质 socket服务端 ?123wsgi&#xff1a; Web服务网关接口- wsgiref # Django内部内置模块- werkzeug # Flask安装完成后&#xff0c;内部默认已经安装好werkzeugfrom werkzeug.wrappers import Request, Respons…

c++builder 运行网站的api_04 将您的API Builder Docker映像发布到AMPLIFY运行时服务(ARS)...

「注&#xff1a;转载请注明出处&#xff0c;谢谢&#xff01;」注意&#xff1a;请参考在线文档以获取最新信息。将APIBuilder应用程序部署到AMPLIFY Runtime Services在先前文章中&#xff0c;我们描述了如何轻松地使用API Builder Standalone创建微服务并将其打包为可在任何…

Android数据库 分页查询,Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及ListView显示数据(转)...

由于刚接触android开发&#xff0c;故此想把学到的基础知识记录一下&#xff0c;以备查询&#xff0c;故此写的比较啰嗦&#xff1a;步骤如下&#xff1a;一、介绍&#xff1a;此文主要是介绍怎么使用android自带的数据库SQLite&#xff0c;以及把后台的数据用ListView控件显示…

go int64转string_go常见问题收录

本条文章记录本人在实际项目中遇到的实际问题&#xff0c;如有错误&#xff0c;欢迎指正&#xff0c;仅供参考&#xff01;欢迎点赞收藏转发&#xff0c;转载请添加原链接声明哦&#xff01;感谢您的支持。变量各种类型转换string转成intintstring转成int64int64, err : strcon…

程序员的功法

今天做复杂业务的时候有感而发。 做程序员这一行其实与练功差不多&#xff0c;都讲究外功与内功。 外功有&#xff1a;编辑器的各种快捷键使用&#xff0c;各种工具提高编程以及分析效率。 内功&#xff1a;算法&#xff0c;数据结构&#xff0c;操作系统原理&#xff0c;代码结…

氢os关闭android键盘,氢OS11到来前,先听听这些一加用户对氢OS的吐槽

随着新版安卓系统发布&#xff0c;各厂商都在筹备新版系统。这几天&#xff0c;一加的官方动态全部围绕着即将到来的氢OS11&#xff0c;广开言路收集大家意见&#xff0c;宣传力度非常大&#xff0c;似乎是希望通过新系统改变大家对于氢OS简陋、稳定性差以及功能更新效率低的印…

mysql部门人员排序设计_MySQL数据库访问性能优化

MYSQL应该是最流行的WEB后端数据库。大量应用于PHP&#xff0c;Ruby&#xff0c;Python&#xff0c;Java 等Web语言开发项目中&#xff0c;无论NOSQL发展多么快&#xff0c;都不影响大部分架构师选择MYSQL作为数据存储。MYSQL如此方便和稳定&#xff0c;以至于我们在开发 WEB 程…

缓冲区的原理

缓冲区中封装了一个数组&#xff0c;并对外提供方法来操作数组&#xff0c;这些方法操作的就是该数组的下标。 而缓冲的原理就是从源获取一批数据放进缓冲区&#xff0c;再从缓冲区不断的取出一个一个的数据。 在每次取完后&#xff0c;再从源中取一批数据到缓冲区&#xff0c;…

android如何删除项目,AndroidStudio中怎样删除项目

最近决定从Eclipse转到AndroidStudio了。虽然之前有接触过AndroidStudio&#xff0c;但都是为了体验一下AndroidStudio炫酷的界面&#xff0c;并没有深入的了解过&#xff0c;所以这次准备好好学习一番AndroidStudio。。。刚开始转到AndroidStudio的时候确实有很多不适应的地方…

openstack o版本自动化脚本安装

controller 节点 跑glance nova (MQ)messaging apache keystone neutron mysql memcache chrony empd epmd 介绍如下 参考 http://blog.csdn.net/mituan1234567/article/details/52767290 在《Erlang/OTP 并发编程实战》中&#xff0c;对 epmd 有如下描述&#…

vue点击切换类名_vue 新用户引导(vue-dirver)

最近公司经理让我在项目上做一个新用户引导&#xff0c;讲真这玩意我只在APP上看见过&#xff0c;网页上没啥功能啊&#xff0c;还需要引导&#xff01; 没办法&#xff0c;刚它&#xff01;&#xff01;&#xff01;在网上查了点资料 Vue 基本上都是 intro.js 和 driver.js 两…

Hibernate or 的用法

转自baidu estrictions.or(Restrictions.like(),Restrictions.or(Restrictions.like,........))里面的or可以无限加的.还是比较好用 Session session getHibernateTemplate().getSessionFactory().openSession();Criteria criteria session.createCriteria(Film.class);List&…