当前位置:网站首页>Set与Map的区别
Set与Map的区别
2022-07-15 16:13:00 【zzzlln】
1.Map是键值对,Set是值的集合,当然键和值可以是任何的值;
2.Map可以通过get方法获取值,而set不能因为它只有值;
3.都能通过迭代器进行for...of遍历;
4.Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储
5.map和set都是stl中的关联容器,map以键值对的形式存储,key=value组成pair,是一组映射关系。set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序。
Set
Set对象允许你存储任何类型的值,无论是原始值或者是对象引用。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set 本身是一个构造函数,用来生成Set 数据结构。Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。
Set中的特殊值
Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
+0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复
undefined 与 undefined 是恒等的,所以不重复
NaN 与 NaN 是不恒等的,但是在 Set 中认为NaN与NaN相等,所有只能存在一个,不重复。
Set实例对象的属性
size:返回Set实例的成员总数
Set实例对象的方法
add(value):添加某个值,返回 Set 结构本身(可以链式调用)。
delete(value):删除某个值,删除成功返回true,否则返回false。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。
数组去重(利用扩展运算符)
Map
Map对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。构造函数Map可以接受一个数组作为参数。
Map和Object的区别
一个Object 的键只能是字符串或者 Symbols,但一个Map 的键可以是任意值。
Map中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
Map的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
Map对象的属性
size:返回Map对象中所包含的键值对个数
Map对象的方法
set(key, val): 向Map中添加新元素
get(key): 通过键值查找特定的数值并返回
has(key): 判断Map对象中是否有Key所对应的值,有返回true,否则返回false
delete(key): 通过键值从Map中移除对应的数据
clear(): 将这个Map中的所有元素删除
边栏推荐
- 现在网上开户安全么?想知道券商选哪个比较好尼?本人小白不懂
- O & M - mélange de compétences
- 因员工将密码设为“123456”,AMD 被盗 450Gb 数据?
- 网络套接字编程
- Loj#510-「LibreOJ NOI Round #1」北校门外的回忆【线段树】
- 理财平台选择哪个安全可靠
- 线性代数 笔记1
- De la numérisation à l'exploitation et à la maintenance intelligentes: Quelles sont les valeurs et les défis?
- 基于HAL库的32工程代码区域意思,及常用函数示例
- In the new era of digital cockpit, the insight and prediction of head enterprise Botai
猜你喜欢

仅需三步 轻松实现远程办公

The software supply chain security risk that makes enterprise digitalization and it executives bear the brunt of the cauldron points to the north

Dimitra 和 Ocean Protocol 解读农业数据背后的秘密

网络套接字编程

Matplotlib绘图报错:“! LaTeX Error: File `type1cm.sty‘ not found.“ 解决办法

Qdu summer training - warm up match

Digital ecological map of human resources in China - flexible employment market

Database daily question --- day 23: game play analysis L
![[deep learning] the speed accuracy of yolov7 exceeds that of other variants. Great God AB tweeted, netizen: it has to be you| Open source](/img/6d/7e0738c7890616c88c2075ea68291e.png)
[deep learning] the speed accuracy of yolov7 exceeds that of other variants. Great God AB tweeted, netizen: it has to be you| Open source

Les risques pour la sécurité de la chaîne d'approvisionnement logicielle liés à la numérisation des entreprises et à la gestion des TI
随机推荐
[Golang数据库专题4]Golang语言操作PostgreSQL进行增删改查
蓝桥杯2022年第十三届省赛第三题-求和 (前缀和 或 公式法)
三维重建之线结构光(一)
xiamarin整合Braze实现送信和端末通知
仅需三步 轻松实现远程办公
ECCV 2022 | 多域长尾分布学习,不平衡域泛化问题研究(开源)
Method of marking disk partition as active and method of canceling marking disk partition as active
QT ui设计师界面常用操作记录(QTableWidget)
Neusoft Ruichi has reached a strategic cooperation with United electronics to seize a new outlet in the domestic basic software market
SYD_ Calculator skill 2 [manage cos]
OPENGL学习(一)认识OPENGL和各种库
MYSQL建表语句错误:1103-Incorrect table name
i7-12700H 和 R7-6800H,这两个 CPU 差距有多大?
不知道如何提高视觉语言大模型?浙大与联汇研究院提出新型多维度评测框架
Symbol数据类型
CS5801_ HDMI to EDP advantage replaces lt6711a solution
Digital ecological map of human resources in China - flexible employment market
Loj#576-「LibreOJ NOI Round #2」签到游戏【线段树】
一文搞懂│什么是跨域?如何解决跨域?
北航&信工所&美团提出LBDT,基于语言桥接的时空交互来进行准确指向性视频对象分割,性能SOTA!代码开源(CVPR 2022)...