当前位置:网站首页>Iterator and for of.. loop
Iterator and for of.. loop
2022-07-07 15:41:00 【When can Xiaobai advance to success】
One 、Iterator
1、Iterator( Iterator ) The concept of
Iterator Iterator It's an interface , Provide unified access mechanism for different data structures . Any data structure , As long as the deployment Iterator Interface , You can complete the traversal operation .
Iterator The function of 3 individual :
- Provide a unified framework for all kinds of data structures 、 Simple access interface ;
- Enables members of a data structure to be arranged in a certain order ;
- ES6 Creates a new traversal command ---for...of loop ,Iterator Main interface supply for...of consumption ;
Iterator The traversal process of is as follows :
- Create a Pointer object , Point to the start of the current data structure . That is, the traverser object is essentially a pointer object .
- The first call to the next Method , You can point a pointer to the first member of a data structure .
- The second call to the next Method , You can point the pointer to the second member of the data structure .
- ...... ......
- Calling the pointer object's next Method , Until it points to the end of the data structure .
Every time you call next Methods will return the information of the current member of the data structure . That is, return a containing value and done Objects with two properties . among ,value Property is the value of the current member ,done Property is a Boolean value indicating whether the traversal ends .
2、 Case study
function main() {
var it = makeIterator(['a','b','c','d']);
for(let i=0;i<5;i++)
{
let re = it.next();
console.log("value:"+re.value+",done:"+re.done);
}
}
function makeIterator(array){
var nextIndex =0;
return {
next:function(){
return nextIndex<array.length?
{value:array[nextIndex++],done:false}:{value:undefined,done:true};
}
};
}
Execution results :
The above case defines a makeIterator function , It's a traverser generator function , The function is to return an iterator object . An array ['a','b','c','d'] Execute this function , Will return the of the array Traverser object ( Pointer object )it.
3、 Default Iterator Interface
ES6 Some data structures of are native Interator Interface , That is, it can be for...of... Loop traversal . The reason lies in , These data structures are deployed natively Symbol.iterator attribute , All deployed Sysbol.iterator The data structure of the property is called the deployed iterator interface . Calling this interface will return an iterator object .
Original possession Iterator The data structure of the interface is as follows :
- Array、Map、Set、String、TypeArray、 Functional arguments object 、NodeList object
let arr =['a','b','c'];
let iter = arr[Symbol.iterator]();// Returns the traverser object , The traverser object has value and done Two attributes
for(let i=0;i<3;i++)
{
console.log(iter.next().value);
}
Two 、for...of.. loop
for...of The loop can automatically traverse Generator Function generated Iterator object , And there is no need to call next Method .
function main() {
for(let v of DayGenerator())
{
console.log(v);
}
}
function* DayGenerator()
{
yield 'Sunday';
yield 'Monday';
yield 'Tuesday';
yield 'Wednesday';
yield 'Thursday';
yield 'Friday';
return 'Saturday';
}
Running results :
once next Method of the return object done The attribute is true,for...of The cycle will end , And does not include the return object , So the top return Statement returned Saturday Not included in for...of In circulation .
except for...of loop , Extension operator (...)、 Deconstructing assignments and Array.from All calls inside the method are iterator interfaces . It means , They can all put Generator Function return Iterator Object as parameter .
function main() {
// Extension operator
console.log([...DayGenerator()]);
//Array.frome Method
console.log(Array.from(DayGenerator()));
// Deconstruct assignment
let [x,y,z]=DayGenerator();
console.log([x,y,z]);
//for...of loop
for(let v of DayGenerator())
{
console.log(v);
}
}
function* DayGenerator()
{
yield 'Sunday';
yield 'Monday';
yield 'Tuesday';
yield 'Wednesday';
yield 'Thursday';
yield 'Friday';
return 'Saturday';
}
Running results :
边栏推荐
- [follow Jiangke University STM32] stm32f103c8t6_ PWM controlled DC motor_ code
- Unity's ASE achieves full screen sand blowing effect
- Window环境下配置Mongodb数据库
- Cocos makes Scrollview to realize the effect of zooming in the middle and zooming out on both sides
- The bank needs to build the middle office capability of the intelligent customer service module to drive the upgrade of the whole scene intelligent customer service
- Typescript release 4.8 beta
- Implementation of crawling web pages and saving them to MySQL using the scrapy framework
- 【跟着江科大学Stm32】STM32F103C8T6_PWM控制直流电机_代码
- How to understand that binary complement represents negative numbers
- Starting from 1.5, build a microservice framework link tracking traceid
猜你喜欢
【深度学习】语义分割实验:Unet网络/MSRC2数据集
Unity之ASE实现卡通火焰
Yunxiaoduo software internal test distribution test platform description document
Cocos uses custom material to display problems
【数字IC验证快速入门】22、SystemVerilog项目实践之AHB-SRAMC(2)(AMBA总线介绍)
Zhongang Mining: Fluorite continues to lead the growth of new energy market
TypeScript 发布 4.8 beta 版本
使用cpolar建立一个商业网站(2)
Write sequence frame animation with shader
2022 all open source enterprise card issuing network repair short website and other bugs_ 2022 enterprise level multi merchant card issuing platform source code
随机推荐
使用cpolar建立一个商业网站(2)
Wechat applet 01
写一篇万字长文《CAS自旋锁》送杰伦的新专辑登顶热榜
OpenGL common functions
2022 all open source enterprise card issuing network repair short website and other bugs_ 2022 enterprise level multi merchant card issuing platform source code
避坑:Sql中 in 和not in中有null值的情况说明
Introduction of mongod management database method
Ctfshow, information collection: web9
unnamed prototyped parameters not allowed when body is present
2.Golang基础知识
[Data Mining] Visual Pattern Mining: Hog Feature + cosinus Similarity / K - means Clustering
Ctfshow, information collection: web8
Cocos uses custom material to display problems
What are the safest securities trading apps
[机缘参悟-40]:方向、规则、选择、努力、公平、认知、能力、行动,读3GPP 6G白皮书的五层感悟
[deep learning] image hyperspectral experiment: srcnn/fsrcnn
HPDC smart base Talent Development Summit essay
OpenGL's distinction and understanding of VAO, VBO and EBO
【數據挖掘】視覺模式挖掘:Hog特征+餘弦相似度/k-means聚類
MySQL bit类型解析