Map与Set
# 1. Set
集合Set类似于数组,但成员都是唯一且无序的,是ES6提供的一种新的数据结构。 优点:处理基本数据类型非常好用
开发中的应用:
- 数组去重
const mySet = new Set([1, 2, 3, 4, 4]);
Array.from(new Set([1,1,1,2,3])) // 去重后转回数组
1
2
2
- 元素查找
const mySet = new Set(['a', 'bb', 'ccc']);
const ifB = mySet.has('bb') // true
1
2
2
- 求并集
const a = new Set([1, 2, 3]);
const b = new Set([4, 3, 2]);
const union = new Set([...a, ...b]); // {1, 2, 3, 4}
1
2
3
2
3
- 求交集
const a = new Set([1, 2, 3]);
const b = new Set([4, 3, 2]);
const intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}
1
2
3
2
3
- 求差集
const a = new Set([1, 2, 3]);
const b = new Set([4, 3, 2]);
const difference = new Set([...a].filter(x => !b.has(x))); // {1}
1
2
3
2
3
- 其他基础方法
- 增 add()
- 删 delete()(单个) / clear()(所有)
- 转为数组 Array.from()
- 获取长度 set.size
- 遍历操作
- forEach() / map() / for...of... / filter
# 2. Map
Map与对象的区别
- 键:
- 对象:字符串或Symbol
- Map:任意类型
- 获取大小
- 对象: Object.keys(obj).length
- Map: map.size
- 遍历顺序
- 对象:返回的键是无序的
- Map:按插入顺序返回键值
应用: Map应看作普通对象的补充,不应该当作替代品
编辑 (opens new window)
上次更新: 2023/02/17