技术分享-ES6-SET&MAP
Set&Map简介
Set&Map属性
Set&Map对比
Set&Map-WeakSet&WeakMap
Set&Map总结
1、Set&Map简介
1)Set : ES6提供了新的数据结构Set。类似于数组,只不过其成员值都是唯一的,没有重复的值。
2)Map : JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键。为了解决这个问题,ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。
2、Set&Map属性
2.1、Set属性
2.1.1、Set结构的实例属性
1)Set.prototype.constructor:构造函数,默认就是Set函数。
2)Set.prototype.size:返回Set实例的成员总数。
2.1.2、Set实例的方法属性:操作方法(用于操作数据)和遍历方法(用于遍历成员)
2.1.2.1、操作方法
1)add(value):添加某个值,返回 Set 结构本身。
2)delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
3)has(value):返回一个布尔值,表示该值是否为Set的成员。
4)clear():清除所有成员,没有返回值。
2.1.2.2、遍历方法
1)keys():返回键名的遍历器。
2)values():返回键值的遍历器。
3)entries():返回键值对的遍历器。
4)forEach():使用回调函数遍历每个成员。
2.2、Map属性
2.2.1、Map结构的实例属性
1)Map.prototype.constructor:构造函数,默认就是Map函数。
2)Map.prototype.size:返回Map结构的成员总数。
2.2.2、Map实例的方法属性:操作方法(用于操作数据)和遍历方法(用于遍历成员)
2.2.2.1、操作方法
1)set(key, value):set方法设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键。
2)get(key):get方法读取key对应的键值,如果找不到key,返回undefined。
3)has(key):has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。
4)delete(key):delete方法删除某个键,返回true。如果删除失败,返回false。
5)clear() : clear方法清除所有成员,没有返回值。
2.2.2.2、遍历方法
1)keys():返回键名的遍历器。
2)values():返回键值的遍历器。
3)entries():返回所有成员的遍历器。
4)forEach():遍历 Map 的所有成员。
PS:由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。
3、Set&Map对比
3.1、Set对比Array


3.2、Map对比Object


4、Set&Map-WeakSet&WeakMap
4.1、WeakSet对比Set
4.1.1、共同点
1)WeakSet 结构与 Set 类似,也是不重复的值的集合。
4.1.2、区别
1)WeakSet 的成员只能是对象,而不能是其他类型的值。
2)WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用。
3)WeakSet 没有循环的方法。
4.2、WeakMap对比Map
4.2.1、共同点
1)WeakMap结构与Map结构类似,也是用于生成键值对的集合。
4.2.2、区别
1)WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。
2)WeakMap的键名所指向的对象,不计入垃圾回收机制。
5、Set&Map总结
5.1、坐标变换/旋转、缩放、平移
1)在整个的数据开发过程中,涉及到数据结构,能使用map不使用数组;考虑数据的唯一性, 考虑使用set,放弃object和数组;总之,优先使用map和set。
浙公网安备 33010602011771号