1. Set
类似于数组,但成员的值都是唯一的,集合实现了iterator接口,所以可以使用扩展运算符和for…of进行遍历,集合的属性和方法:
- size:返回集合的元素个数
- add:增加一个新元素,返回当前集合
- delete:删除元素,返回Boolean值
- has:检测集合中是否包含某个元素,返回Boolean值
let s = new Set();
let s1 = new Set(['aa','bb']); // 括号中是可迭代对象
let arr = [....]
let arr2 = [.....]
// 数组去重
let result = [...new Set(arr)]
// 交集
let result = [...new Set(arr)].filter(item => {
return new Set(arr2).has(item);
})
// 并集
let result = [...new Set([...arr, ...arr2])]
// 差集
let result = [...new Set(arr)].filter(item => {
return !new Set(arr2).has(item);
})
2. Map
类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map也是想了iterator接口,所以可以使用扩展运算符和for…of进行遍历。Map的属性和方法:
- size:返回Map的元素个数
- set:增加一个新元素,返回当前Map
- get:返回键名对象的键值
- has:检测Map中是否包含某个元素,返回Boolean值
- clear:清空集合,返回undefined
let m = new Map();