00:00
哈喽,大家好,这个小节我们来学习一下迭代器。迭代器呢,它呢,英文名称叫是一种接口。啊,为各种不同的数据结构呢,提供统一的访问机制。其实迭代器这个概念呢,在很多语言都有啊,你比如说Java,比如说C加加啊,比如说Python PHP啊等等啊,语言里边很多啊,都有这个D的概念。那么任何数据结构只要部署了接口,就可以完成便利操作。啊,就是便利这个数据。啊,所以说遍历我们使用这个,呃,For for循环是或者for运循环就可以遍历,哎,你先别急啊,ES6呢,还创建了一种新的便利命令,叫做for of。而it接口呢,主要就是供这个for of来消费的,什么意思呢?就是只要你这个数据结构啊,部署了接口,那好我就可以使用foro来便利你这个数据。
01:08
啊,原生具备接口的数据有哪些呢?有数组arguments set map string type和node list,这些数据结构呢,都是部署了itator接口的,那同学可能会说eer接口,那接口是个什么东西呢?其实在这在GS里边,我们所指的E接口就是对象里边的一个属性。再说一遍啊,这里指的eator接口就是对象里边的一个属性啊,这个属性的名字叫做symbol点。好,那么切过来,咱们来举一个,举个例子啊,来演示一下。我呢先声明一个数组,因为它这里说呢,数组是具备it接口的。好,然后呢,我们在这儿看cost,然后来一个西游,等于一个唐僧。
02:06
是吧,然后孙悟空。猪八戒。和沙僧。四个人是吧,经典四大名著啊,西游记有这样一种感觉是吧?就是年少不懂曲中意啊。这是青懂已是曲中人。好了啊,西游记啊,年少时候就听个就看个热闹啊,长大以后呢,一看才是发现。啊,写的是真好,好了,那接着的话,咱们来使用for of来遍历一下,哎,使用fall of便利这个数组。For,然后let v of西游。然后里边呢,我们使用cons log来打印一下V这个变量。好,一起来看一下。这个结果呢,大家注意看啊,唐僧,孙悟空,猪八戒,沙僧啊,没有啥问题啊,大家注意观察,就是for of循环和这个for in循环的一个区别啊,来看一下,如果是要写个in的话,看结果0123。
03:05
就是for in循环这里呢,前面的变量,它所保存的是键名。而for of循环呢,它这块呢,保存是这个键值。啊,那么咱们回过来再说一下这为什么这个这个这个数组能够使用full of便利呢?他们说了啊,只要它这个对象里边有symbol的属性就可以,我们一起来看一看它上面到底有没有。好,然后log打印一下西游这个变量保存。点开。诶,好像没有,诶别急,再点开往下走走走看,这里有一个symbol的属性啊,就是symbol点这样一个属性,它对应的值是什么呀?是一个函数。啊,是一个函数,好,那么它为什么能够实现我们的迭代,就是实现这个便利呢?我们来看一看它的一个原理。
04:03
原理是这样子的,首先先创建一个指针对象。啊,然后指向了当前数据结构的起始位置,也就是说首先我先创建一个谁啊,创建一个对象,那么谁来创建呢?就是由这个函数。啊,由这个symbol对应这个函数来创建一个对象,然后对象呢,它指向结构的最开始位置。然后第一次呢,调用next方法,哪来ne的方法呢?啊,就是返回的对象身上有一个ne的方法。我们来看一看啊,别急,在这儿呢,我首先先来获取它的那个对象。等于一个西游括弧,然后呢,Symbol点。我们说了啊,这个它对应的是一个函数,我呢加一个小括号,把这个对象呢,我得到看一眼can the log。
05:04
保存切过来看这啊,点开它,然后点开它,你看这这里有一个next的方法。啊,然后呢,第一次调用next方法呢,指针会自动指向数据结构的第一个成员,那我们来调一下试试,好吧,来看一下呃,调用。调用这个对象的next的方法。来,在这儿点next。看结果,看结果好保存。看这。啊,当我们调完代ne斯方法以后呢,指针自动指向数据结构的第一个成员,然后在这会把这个结果返给我们返回,然后接下来不断调用那方法,指针一直向后移动,直到最后一个成员。我们这儿呢,再来调用2345。保存切过来来看一下,就是每一次我都用那方法都会返回一个新的值。
06:04
啊,第一次,然后第一个第二次,第三次第四次到第五次,你看一下这是一个unDeFined。为什么?因为到头了没有值了,而且你注意看后边还有一个属性叫荡,这个荡呢是度的一个完成时啊,在这呢,就是表示是否完成,为针则表示便利啊和这个循环就已经。啊,完成了。好了,这是这样一个啊,这样一个步骤,然后呢,每调next返回一个包含value和down属性的一个对象。这是啊,咱们这个迭代器能够便利数据的一个原理,再说一遍,第一次哈,首先呢,先创建一个这样的对象。啊,通过调用呢ne方法啊,不断的呢,去指向元素的下一个元素,下一个元素下一个元素,而且每次返回呢,不光返回这个值,还要返回呢,它得是否完成这样一个状态。
07:02
所以说每一次返回结果都是一个对象,直到最后一个成员返回再去执行的话,那么这个时候,当那个状态就会变成出。好了,那么对于迭代器的一个介绍,我们就先说这么多,下一个小节咱们来举一个实例。
我来说两句