Set和Map

Set

Set 类似于数组,但是成员的值都是唯一的,没有重复的值

  1. const s = new Set();
  2. [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
  3. for (let i of s) {
  4. console.log(i);
  5. }

数组去重

[…new Set(array)]

字符串去重

[…new Set(‘ababbc’)].join(‘’)

  1. //合并去重
  2. const a = [1,2,3];
  3. const b = [1,5,6];
  4. const c = [...new Set([...a,...b])];//[1,2,3,5,6]
  5. const obj1 = {
  6. a:1,
  7. }
  8. const obj2 = {
  9. b:1,
  10. }
  11. const obj = {...obj1,...obj2};//{a:1,b:1}

方法
Set.prototype.add(value):添加某个值,返回 Set 结构本身。
Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
Set.prototype.clear():清除所有成员,没有返回值。
遍历
Set.prototype.keys():返回键名的遍历器
Set.prototype.values():返回键值的遍历器
Set.prototype.entries():返回键值对的遍历器
Set.prototype.forEach():使用回调函数遍历每个成员
keys()返回键名 ,values()返回键值 ,entries() 返回键名和键值,每次输出一个[key,value]
forEach()

  1. let set = new Set([1, 4, 9]);
  2. set.forEach((value, key) => console.log(key + ' : ' + value))

(…)拓展运算符for…of 遍历

WeakSet 结构与 Set 类似,也是不重复的值的集合。但WeakSet 的成员只能是对象,并且对象在外部消失,该对象在weakset中的引用也会被清楚,适用于临时存放一组对象和对象的属性。不适合用于对象引用

Map

类似于对象
键名-键值一对一

  1. const map = new Map([
  2. ['name' ,'a'],
  3. ['title' , 'b']
  4. ])

方法:
map.size //返回map成员的总数
Map.prototype.set(key, value)设置map中键名为key的键值,存在key,value 更新;不存在key,新增一条
Map.prototype.get(key) 找到map中键名为key 的键值,不存在key 时,为undefined
同set