Set与Map
Set
定义
一组无序且不重复的数据集合
方法与属性
- (一)方法
- add():给Set集合添加数据,只能添加一个值,可以连续使用,如:add(1).add(2))
- has():判断Set集合是否有这个值,有返回true,没有则返回false
- delete():删除Set集合的某个数据,一次只能删除一个值。删除不存在的数据,什么也不会发生,也不会报错
- clear():清空Set的数据
- forEach():遍历Set。s.forEach(function(value,key,set){},this指向),Set集合中的value和key值相同,set为遍历的这个Set集合
- (二)属性
- size:Set集合的长度,相当于数组中的length
Set构造函数的参数
- 数组
- 字符串
- arguments
- NodeList
- Set
//复制一个Set,s2不等于s1
const s1 = new Set([1,2,3]);
const s2 = new Set(s1);
注意:Set判断数据重复根据===原则,但NaN不同,Set中的NaN等于NaN
Map
定义
键值对的集合,Map可以让任何数据类型作为它的key,数组只能是合法标识符
方法与属性
- (一)方法
- set():添加新的键值对,如果键已经存在,后添加的键值对覆盖已有的
- get():通过键获取值
- has():判断Map里是否有某个键
- delete():删除某个数据,如果删除数据不存在的键,什么都不会发生也不会报错
- clear():删除全部数据
- forEach():遍历Map,m.forEach(function(value,key,map){},this指向)
- (二)属性
- size:Map的长度,类似于数组中的length
Map构造函数的参数
- 数组(只能是二维数组)
const map = new Map([
['name': 'xxx'],
['age': 18]
])
- Set(以二维数组的形式)、Map
//复制Map
const m1 = new Map([
['name': 'xxx'],
['age': 18]
])
const m2 = new Map(m1)
注意:Map的NaN与Set一样,判断键名方式也一样