es6学习笔记——【Set和Map用法,主要用于操作数组对象】

一、Set的用法

  1.去除数组重复值;

const set = new Set([1, 2, 3, 4, 4]);
const s = [...set];
console.log(s);
// [1, 2, 3, 4]

  2.实例方法:   

       -add(value):添加某个值,返回 Set 结构本身。
  -delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  -has(value):返回一个布尔值,表示该值是否为Set的成员。
  -clear():清除所有成员,没有返回值。 
const s = new Set();
s.add(1).add(2).add(2);
// 注意2被加入了两次,但是只会加入一个。
s.size // 2
s.has(1) // true
s.has(2) // true
s.has(3) // false
s.delete(2);
s.has(2) // false

  3.遍历方法:

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

let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.entries()) {
  console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]

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

  3.结合扩展运算符(...)、mapfilter方法使用

// (1)结合扩展运算符
let arr = [3, 5, 2, 2, 5, 5];
let unique = [...new Set(arr)];
// [3, 5, 2]

// (2)结合map
let set = new Set([1, 2, 3]); set = new Set([...set].map(x => x * 2)); // 返回Set结构:{2, 4, 6}


// (3)结合filter
let set
= new Set([1, 2, 3, 4, 5]);
set
= new Set([...set].filter(x => (x % 2) == 0));
// 返回Set结构:{2, 4}

// 实现交集、并集、差集
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);

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

 二、weakSet的用法

  和Set用法相同,唯一区别是接受对象。

  具体查看文档,感觉没怎么用过

三、Map的用法

  和对象(Object)相似,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

  具体查看文档,感觉没怎么用过

四、WeakMap结构与Map结构类似,也是用于生成键值对的集合。

  具体查看文档,感觉没怎么用过

原文地址:https://www.cnblogs.com/chenhuishui/p/10516274.html