Set
set对象类似于数组,且成员的值都是唯一的。
Set实例对象的方法
add(value):添加某个值,返回 Set 结构本身(可以链式调用)。
delete(value):删除某个值,删除成功返回true,否则返回false。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。
const arr = [1, 2, 3, 4, 5, 3, 2, 1];
//1:
const set = new Set();
arr.forEach(item => set.add(item));
console.log(set); // 1, 2, 3, 4, 5
//2:
console.log([...new Set(arr)]); //[1, 2, 3, 4, 5]
Map
Map对象类似 Json 。
Map对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。构造函数Map可以接受一个数组作为参数。
Map对象的方法
set(key, val): 向Map中添加新元素
get(key): 通过键值查找特定的数值并返回
has(key): 判断Map对象中是否有Key所对应的值,有返回true,否则返回false
delete(key): 通过键值从Map中移除对应的数据
clear(): 将这个Map中的所有元素删除
let map = new Map();
var obj = { name: '兴奋起来', age: 18 };
map.set(obj, '狗胆');
map.get(obj); // 狗胆
map.has(obj); // true
map.delete(obj) ;
map.has(obj); // false
set 、map 的区别
1.Map是键值对,Set是值得集合,当然键和值可以是任何的值;
2.Map可以通过get⽅法获取值,⽽set不能因为它只有值;
3.都能通过迭代器进⾏for...of遍历;
4.Set的值是唯⼀的可以做数组去重,Map由于没有格式限制,可以做数据存储;