一、Set和Map数据结构定义区别
Set数据结构 | Map数据结构 | |
定义 | Set类似于数组,但是成员的值都是唯一的,没有重复。使用new Set()创建Set实例 | Map类似于对象,但是键的范围不限于字符串,各种类型的值都可以作为键值。使用new Map()创建Map实例 |
二、Set和Map操作方法的区别
Set数据结构 | Map数据结构 | |
size属性 | set.size | map.size |
新增 | set.add(val); 返回Set结构本身 | map.set(key, val); 返回Map结构本身 |
删除 | set.delete(val); 返回布尔值,表示是否删除成功 | map.delete(key); 返回布尔值,表示是否删除成功 |
是否包含某个值 | set.has(val); 返回布尔值,表示是否包含这个值 | map.has(val); 返回布尔值,表示是否包含这个键 |
获取值 | - | map.get(key); 返回对应键值的值,没有则返回undefined |
清除所有成员 | set.clear(); 没有返回值 | map.clear(); 没有返回值 |
//Set数据结构
let set = new Set();
set.add(1)
.add(2)
.add(2);
set.size; //2
set.has(3); //false
set.delete(2);
set.has(2); //false
//Map数据结构
const map = new Map();
map.set('aaa', true)
.set(2, 2)
.set(undefined, 'this is undefined');
map.size; //3
map.get(undefined); //'this is undefined'
map.has(2); //true
map.delete(2); //true
map.has(2); //false
三、Set和Map的遍历方法
1. 遍历键名:for(let item of set.keys()){ }; for(let item of map.keys()){ };
2. 遍历键值:for(let item of set.values()){ }; for(let item of map.values()){ };
3. 遍历键值对:for(let item of set.entries()){ }; for(let item of map.entries()){ };
4. 使用回调遍历每个成员:set.forEach(); map.forEach()
四、Set和Map的应用
1. 数组去重:[... new Set(Array)] ;
参考文章:http://es6.ruanyifeng.com/