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由于没有格式限制,可以做数据存储;

posted @ 2020-05-25 17:14  程序員劝退师  阅读(3792)  评论(0编辑  收藏  举报