Set,Map有什么区别?
Posted cxyqts
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Set,Map有什么区别?相关的知识,希望对你有一定的参考价值。
Map:Map
对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。构造函数Map
可以接受一个数组作为参数。
- map对应的数据类型是对象{},它拥有和对象一样的方法;
- map的键和值可以是任何对象,这一点对象的键只能是number或者string;
- 自带iterator遍历器,可以进行for...of遍历;
- 初始化一个Map: var map = new Map([[1],[2]]);
- 对应的方法:
- size:返回Map对象中所包含的键值对个数
- set(key, val): 向Map中添加新元素
- get(key): 通过键值查找特定的数值并返回
- has(key): 判断Map对象中是否有Key所对应的值,有返回true,否则返回false
- delete(key): 通过键值从Map中移除对应的数据
- clear(): 将这个Map中的所有元素删除
keys()
:返回键名的遍历器values()
:返回键值的遍历器entries()
:返回键值对的遍历器forEach()
:使用回调函数遍历每个成员
Set:Set
对象允许你存储任何类型的值,无论是原始值或者是对象引用。它类似于数组,但是成员的值都是唯一的,没有重复的值。
- set对应的数据类型是数据,有一些方法可以公用;
- 由于map是值的集合,所有set的键和值是相等的;
- set所有的值是唯一的,可以进行数组去重;
- 自带iterator遍历器,可以进行for...of遍历;
- 初始化一个Set:var set = new Set([‘1‘,undefined,{},2,[3,4]]);
- 对象的方法:
- size:返回Map对象中所包含的键值对个数
add(value)
:添加某个值,返回 Set 结构本身(可以链式调用)。delete(value)
:删除某个值,删除成功返回true
,否则返回false
。has(value)
:返回一个布尔值,表示该值是否为Set的成员。clear()
:清除所有成员,没有返回值。keys()
:返回键名的遍历器。values()
:返回键值的遍历器。entries()
:返回键值对的遍历器。forEach()
:使用回调函数遍历每个成员。
所以综上所述,主要有一下几个区别:
1.Map是键值对,Set是值得集合,当然键和值可以是任何的值;
2.Map可以通过get方法获取值,而set不能因为它只有值;
3.都能通过迭代器进行for...of遍历;
4.Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储;
以上是关于Set,Map有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章