[前端攻坚]:Set的使用

news2025/1/24 1:21:57

总结一些日常需要用到的一些api,也是在一些面试中会经常出现的题目,今天分享的是Set的一些用法和个人的一些理解, 同时文章也被收录到我的《JS基础》专栏中,欢迎大家点击收藏加关注。

我们知道Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构,他们的共同点是set和map都是存储的不会重复的值,利用好这一点可以很好的做一些数组去重和对象数组的区中,他们的不同点是存储形式上的不同,集合是以[值,值]的形式存储元素,字典是以[键,值]的形式存储。

认识set

类似于数组,但是成员的值都是唯一的,没有重复的值

1.set()
2.has()

先看下简单的调用

1.set 用来设置键和值
2.has 判断是否存在某个值
3.size 返回set中的个数
4.clear 清空set

const s = new Set();
s.add(1)
console.log(s) //Set(1) { 1 }
s.add(1).add(2).add(2) 
console.log(s) //Set(2) { 1, 2 }
console.log(s.has(2)) //true
n.clear()
n.size // 0 

基本使用

1.可以使用add来对set设置值,并且可以使用链式操作来进行设置
2.键可以是任意数据类型
3.每个值在 Set 的集合中是独一无二的

const s = new Set();

let c = {c:1}
s.add({a:1}).add(2).add(2).add({a:1}).add(c).add(c); //Set(4) { { a: 1 }, 2, { a: 1 }, { c: 1 } }
console.log(s);
console.log(s.size) 

对set设置值之后可以看到重复设置的会被过滤掉,但是{a:1}是没有被过滤出来的,因为本身是一个对象,就算对象中的属性和值都一样,都存储了不同的指针,所以两个对象都是不相等的

应用场景

从这里我们可以看出set的存储类型和数组的存储非常相似,都是通过值的方式存储,并且可以通过遍历输出,针对于不会重复的这个特点,set的应用场景可以放在对数组进行去重的场景下

对于map的应用场景,可以放到实现深拷贝中进行使用,存储对象中的复杂数据类型

var arr = [1,1,13,4,4,5,6,77,8,8,9]
console.log(...new Set(arr)) //1 13 4 5 6 77 8 9 

set可以理解是一个数组的形式,那么同样可以用rest对他进行展开,而且可以传入可以数组,通过newset的方法自动的完成对数据的去重。

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

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

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

相关文章

手把手教你成为荣耀开发者:如何获取平台帮助及最新通知?

荣耀开发者服务平台是荣耀面向开发者的统一生态入口,通过聚合周边内外部系统,分全球多站点部署,为全球开发者提供业务全生命周期的商业支撑服务,拥有应用分发、智慧服务、开放能力、HONOR Connect等众多业务等您来合作。 在与荣耀…

引擎入门 | Unity UI简介–第3部分(2)

本期我们继续为大家进行【Unity UI简介–第3部分】的后续教程 学习内容 4.添加遮挡面板 5.添加内容面板 6.添加按钮 文章末尾可免费获取教程源代码 本篇【Unity UI简介–第3部分】篇幅较长,分为八篇,本篇为第二篇,还未看过第一篇的请点…

Linux学习-89-JDK下载安装(rpm方式)

17.19 JDK下载安装(rpm方式) linux系统上jdk安装方式比较多,最简单的便是yum安装,可以使用以下步骤来安装: #首先先检查是否已经安装JDK [rootCncLucZK ~]# rpm -qa |grep java[rootCncLucZK ~]# rpm -qa |grep jdk …

Docker ( 三 ) 安装 MySQL

6.2.安装 MySQL 6.2.1.拉取镜像 6.2.1.1.搜索查看可用的mysql镜像 docker search mysql6.2.1.2.拉取最新版本的mysql镜像 docker pull mysql:latest6.2.1.3.查看镜像是否已经有mysql docker images|grep mysql6.2.2.启动容器 6.2.2.1.启动容器实例 启动同时设置名字以及r…

搜遍全网,终于找到了报表自动化的最佳工具,比Excel好用10倍

工作快十年了,最开始是在华为做报表,后来去了美团从事大数据和平台方面的工作,现在在国企干了快三年。辗转各大企业的IT部门,最明显的感知就是企业间数字化程度差距太大了。就从报表这个点来说,互联网公司早就实现了报…

动物宠物领养网站的设计与实现(Vue+Spring Boot+Java)

目 录 摘 要 I Abstract II 目 录 III 图清单 V 表清单 VII 1 绪论 1 1.1 动物领养网站的现状与发展 1 1.2 “万千宠爱”动物领养网站的研究内容 2 1.3 “万千宠爱”动物领养网站的研究目的和意义 2 1.4 本章小结 3 2 本“万千宠爱”动物领养网站的分析 4 2.1 可行性分析 4 2.…

【目标检测】YOLOv5能识别英雄和小兵?原理解析~

目录 一、简介 二、模型结构 1.整体结构图 2.Backbone(CSPDarknet) 3.SPPF(Spatial Pyramid Pooling - Fast) 4.Neck(FPNPAN) 5.Head 三、anchor编解码 1.anchor编码 2.anchor解码 四、损失函数 …

【20天快速掌握Python】day09-模块和包

1.Python中的模块 在Python中有一个概念叫做模块(module)。 说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 比如我们经常使用工具 random,就是一个模块。使…

车险java开发工程师【10k-15k】13薪

众推职聘”以交付结果为宗旨的全流程化招聘服务平台! 今日招聘信息↓ 【工作内容】 1.参与软件项目和产品概要设计,负责详细功能设计、编码实现及相关文档编写; 2.根据模块设计完成相应的模块编码及单元测试; 3.对用户行为、需求…

「React 深入」知悉Fiber,方能百战不殆~

在React v16以上的版本引入了一个非常重要的概念,那就是fiber,实际上fiber是react团队花费两年的时间重构的架构,在之前的文章中也提及到了fiber,那么fiber架构究竟是什么,为什么要使用fiber 在正式开始前&#xff0c…

网络空间安全——MS15_034漏洞验证与安全加固

网络空间安全——MS15_034漏洞验证与安全加固 靶机:windows 2008 安装好iis7.5 1.安装iis7.5,用127.0.0.1访问,将访问页面截图 2.用burpsuite 抓包分析是否存在ms15_034漏洞,抓包验证截图 3.调用msf相应的测试模块进行扫描,…

沥高科技冲刺创业板:拟募资5.45亿 为胡仲杰与岑婵芳夫妻店

雷递网 雷建平 12月20日上海沥高科技股份有限公司(简称:“沥高科技”)日前递交招股书,准备在深交所创业板上市。沥高科技计划募资5.45亿元,其中,1.79亿元用于航空航天用真空袋工艺材料生产项目,…

Talk预告 | 悉尼科技大学在读博士生胡思逸:MARLlib,全新的多智能体强化学习框架

本期为TechBeat人工智能社区第464期线上Talk! 北京时间12月21日(周三)20:00,悉尼科技大学澳大利亚人工智能研究所ReLER实验室在读博士生——胡思逸的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “MARLlib, 全新的多智能体…

2022 年 MathorCup 高校数学建模挑战赛A题

赛道 A:“58 到家”家政服务订单分配问题 “58 到家”是“58 同城”旗下高品质、高效率的上门家政服务平台,平 台向用户提供家政保洁、保姆、月嫂、搬家、维修等众多生活领域的服务。 在家政保洁场景中,用户在平台下单购买服务后,…

非零基础自学Golang 第13章 并发与通道 13.3 channel 13.3.1 channel类型 13.3.2 缓冲机制

非零基础自学Golang 文章目录非零基础自学Golang第13章 并发与通道13.3 channel13.3.1 channel类型13.3.2 缓冲机制第13章 并发与通道 13.3 channel goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。 引用类型channel是CSP模式的具体体现&#xff…

游戏玩得好的AI,已经在看病救人了

一个游戏AI,怎么干起医生的活了? 而且这本事还是从打游戏的经验里总结来的。 喏,拿一张病理全片扫描图像,不用遍历所有高倍镜视野,也能找到病灶所在。 在它看来,这个过程和《我的世界》里伐木居然是类似的…

Diffusion惊艳应用大赏

文|白鹡鸰自从Diffusion模型兴起之后,AI绘画圈又迎来了一波猪突猛进式的强化,早几年还只是Ins的二次元/迪士尼风格滤镜,让人穿上不同服装当接头霸王。现在,你随便输几句话,模型就能刷刷刷给你吐出一大堆精美…

024 | 知行国学:全国领先的线上一对一国学教育平台 | 大学生创新训练项目申请书 | 极致技术工厂

公司产品 公司的产品包括两个部分的内容,一是模块化、智能化的课程体系——“诗书礼乐”快乐国学课程体系,二是梯队化、“以一带群”、联动型的师资培训体系——“知行者”大学生国学师资培训模式。 近年来,国家大力弘扬中华优秀传统文化&a…

在Docker中的ubuntu中安装Python3和Pip

下载载python3.7 apt-get update apt-get install python3.7 建立软链接 先删除旧的python连接。 删除后建立新的连接关系,例如linux下python3默认在/usr/bin/下 rm -rf /usr/bin/python ln -s /usr/bin/python3.7 /usr/bin/python 进入python3.7的lib中&#xf…

基于springboot的疫情防控系统java疫情防控物资管理平台源码和论文

系统开发技术介绍 2.1 MySQL数据库 社区疫情防控系统采用了一款开源免费的关系型数据库——MySQL数据库进行开发,因为它不收取任何费用,免费提供给各个开发者使用学习使用,使本次系统开发成本大大降低了。由于MySQL数据库体积小&#xff0c…