ECMAScript6 入门 Set 和Map结构

Posted panrui1994

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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() 清除所有值

 

待续....

以上是关于ECMAScript6 入门 Set 和Map结构的主要内容,如果未能解决你的问题,请参考以下文章

es6入门教程完整版

es6学习总结

ES6学习—Set 和 Map 数据结构

ES6入门之set和map

es6入门set和map

ECMAscript6——iterable