当前位置: 首页 > 后端技术 > PHP

Es6中Set和Map数据结构和Iterator(遍历器)的概念

时间:2023-03-30 01:20:07 PHP

Set和Map数据结构和Iterator(遍历器)的概念Set无序不可重复集合1.InstantiatenewSet();newSet([]);newSet('terry');//tery2.Set实例可以调用方法Set实例具有以下属性。Set.prototype.constructor:构造函数,默认为Set函数。Set.prototype.size:返回Set实例的成员总数。Set结构的实例具有以下方法。add(value):添加一个值,返回Set结构本身delete(value):删除一个值,返回一个布尔值,表示删除是否成功。has(value):返回一个布尔值,表示该值是否是Set的成员。clear():清除所有成员,无返回值。keys():返回键名的遍历器values():返回键值的遍历器entries():返回键值对的遍历器forEach():使用回调函数遍历每个成员Set本身是一个构造函数,用于生成Set数据结构letset=newSet();设置.添加(1);//添加数据set.add(2);设置.添加(3);设置.添加(2);控制台日志(设置);//set{1,2,3}应用:去除数组中重复元素的方法letarr=[1,2.3,4,3,2,1];让set=newSet(arr);让结果=[...设置];//set转换为数组MapMap可以接受数组作为参数,数组的成员是表示键值对的数组letmap=newMap();map.set('name','terry');constmap=newMap([['姓名','张三'],['标题','作者']]);Map结构的实例具有以下属性。Set.prototype.size:返回Map结构的成员总数。Map结构的实例具有以下方法。set(key,value):set方法将键名key对应的键值设置为value,然后返回整个Map结构。如果键已经有值,则更新键值,否则重新生成键。get(key):get方法读取key对应的key值,找不到key返回undefined。has(key):has方法返回一个布尔值,表示一个key是否在当前Map对象中。delete(key):delete方法删除一个键并返回true。如果删除失败则返回false。clear():清除所有成员,无返回值keys():返回键名的遍历器values():返回键值的遍历器entries():返回键值对的遍历器forEach():使用回调函数遍历遍历迭代器(Iterator)的每个成员就是这样一种机制。它是为各种数据结构提供统一访问机制的接口。任何数据结构只要部署了Iterator接口,就可以完成遍历操作(即依次处理数据结构的所有成员)。迭代器具有三个作用:为各种数据结构提供统一方便的访问接口;使得数据结构中的成员可以按照一定的顺序排列;ES6新增了for...of循环的遍历命令,Iterator接口主要用于for...of的消费。Iterator的遍历过程:创建一个指向当前数据结构起始位置的指针对象。也就是说,遍历器对象本质上是一个指针对象。第一次调用指针对象的next方法可以将指针指向数据结构的第一个成员。第二次调用指针对象的next方法时,指针指向数据结构的第二个成员。不断调用指针对象的next方法,直到它指向数据结构的末尾。默认的Iterator接口Iterator接口的目的是为所有数据结构提供统一的访问机制,即for...of循环(详见下文)。当使用for...of循环遍历某个数据结构时,循环会自动寻找Iterator接口。只要一个数据结构部署了Iterator接口,我们就称这个数据结构为“可迭代的”。Iterator对象可以通过下面的方法访问variterator=iterObj[Symbol.iterator]();具有Iterator接口的本机数据结构如下:ArrayMapSetStringTypedArray函数的参数对象,NodeList对象