ECMAScript6 入门 Set 和Map结构
Set 和 Map 数据结构
1:Set本身是一个构造函数,用来生成 Set 数据结构 (它类似于数组,但是成员的值都是唯一的,没有重复的值) (所以可以用它来对数组去重)[...new Set(array)] (去除字符串里面的重复字符)[...new Set('ababbc')].join('') Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化 向Set加入值的话,不会发生类型转换,并且他的判断原理和 Object.is() 的判断规则是一样
2:Set 实例的属性和方法 属性 { Set.prototype.constructor:构造函数,默认就是Set函数。 Set.prototype.size:返回Set实例的成员总数。 } 方法 { Set.prototype.add(value):添加某个值,返回 Set 结构本身。 Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。 Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。 Set.prototype.clear():清除所有成员,没有返回值。 } 遍历 { Set.prototype.keys():返回键名的遍历器 Set.prototype.values():返回键值的遍历器 Set.prototype.entries():返回键值对的遍历器 Set.prototype.forEach():使用回调函数遍历每个成员 }
3:Array.from方法可以将 Set 结构转为数组 (所以这又是一种对数组去重的方法) function dedupe(array) { return Array.from(new Set(array)); } dedupe([1, 1, 2, 3]) // [1, 2, 3]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
WeakSet
1:WeakSet 结构与 Set 类似,也是不重复的值的集合 和Set的差别 { 1:WeakSet 的成员只能是对象,而不能是其他类型的值 2:WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用 } 相同点 { 和Set接受的参数一样:可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数 }
2:语法使用 const a = [[1, 2], [3, 4]]; const ws = new WeakSet(a); // WeakSet {[1, 2], [3, 4]} 方法 { WeakSet.prototype.add(value):向 WeakSet 实例添加一个新成员。 WeakSet.prototype.delete(value):清除 WeakSet 实例的指定成员。 WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在 WeakSet 实例之中 }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Map
(传统的JavaScript对象,只能采用字符串当做key),而Map突破这个限制,各种类型的值(包括对象)都可以当作键 属性 { 1:size属性返回 Map 结构的成员总数 2:Map.prototype.set(key, value) 更新键值,如果不存在就相当于新增 3:Map.prototype.get(key) 获取相应的键值 4:Map.prototype.has(key) 返回该键是否存在 5:Map.prototype.delete(key) 删除某个键 6:Map.prototype.clear() 清除所有值 }
待续....
不忘初心,不负梦想