Map与Set

Map与Set

1. Map

1.1 定义

map保存键值对。任何值(对象或者原始值)都可以作为一个键或者值。构造函数可以接受一个数组作为参数。

1.2 map的属性

​ size:返回map对象中所包含的键值对的个数

1.3 map的方法

  • set(key,val):向Map中添加新元素
  • get(key)返回指定键的值
  • has(key)判断是否包含key对应的值。有返回true。否则返回false;
  • delete(key)
  • clear()清除map中的所有

1.4 遍历方法

  • keys()返回所有的键名的遍历器
  • values()返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach()使用回调函数遍历每个成员

2.Set

2.1 定义:单列集合

set对象允许你存储任何类型的值,无论是原始值还是对象。。类似与数组,但是成员的值都是唯一的,没有重复的值

set本身是一个构造函数,用来生成Set 数据结构。Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。

2.2 set中的特殊值

Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:

  • +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复
  • undefinedundefined 是恒等的,所以不重复
  • NaN 与 NaN 是不恒等的,但是在 Set 中认为NaN与NaN相等,所有只能存在一个,不重复。

2.3 set的属性

  • size:返回Set实例的成员总数。

2.4 set实例对象的方法

  • add(value):添加某个值,返回 Set 结构本身(可以链式调用)。
  • delete(value):删除某个值,删除成功返回true,否则返回false
  • has(value):返回一个布尔值,表示该值是否为Set的成员。
  • clear():清除所有成员,没有返回值。

2.5 遍历方法

  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回键值对的遍历器。
  • forEach():使用回调函数遍历每个成员。

由于Set结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。

2.6 set对象的作用

  • 数组去重(利用扩展运算符)

  • 合并两个set对象

let a = new Set([1, 2, 3])
let b = new Set([4, 3, 2])
let union = new Set([...a, ...b]
  • 交集
let a = new Set([1, 2, 3])
let b = new Set([4, 3, 2])
let intersect = new Set([...a].filter(x => b.has(x)))
  • 差集
let a = new Set([1, 2, 3])
let b = new Set([4, 3, 2])
let difference = new Set([...a].filter(x => !b.has(x))) //  {1} 

3. set与Map的区别

3.1 Map 是键值对,set是单例集合值的集合
3.2 map通过get方法获取值,set不能获取值
3.3 Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储
3.4 .map和set都是stl中的关联容器,map以键值对的形式存储,key=value组成pair,是一组映射关系。set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值