当前位置:网站首页>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 :

边栏推荐
- Nacos conformance protocol cp/ap/jraft/distro protocol
- 【服务器数据恢复】某品牌StorageWorks服务器raid数据恢复案例
- [understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper
- Typescript release 4.8 beta
- Runnable是否可以中断
- [quickstart to Digital IC Validation] 20. Basic syntax for system verilog Learning 7 (Coverage Driven... Including practical exercises)
- 【数字IC验证快速入门】20、SystemVerilog学习之基本语法7(覆盖率驱动...内含实践练习)
- A need to review all the knowledge, H5 form is blocked by the keyboard, event agent, event delegation
- 【數據挖掘】視覺模式挖掘:Hog特征+餘弦相似度/k-means聚類
- 【兰州大学】考研初试复试资料分享
猜你喜欢

Steps to create P8 certificate and warehousing account
![[deep learning] semantic segmentation experiment: UNET network /msrc2 dataset](/img/69/9dadeb92f8d6299250a894690c2845.png)
[deep learning] semantic segmentation experiment: UNET network /msrc2 dataset

webgl_ Enter the three-dimensional world (1)

Ctfshow, information collection: web14
Introduction of mongod management database method

居然从408改考自命题!211华北电力大学(北京)

写一篇万字长文《CAS自旋锁》送杰伦的新专辑登顶热榜
Configure mongodb database in window environment

全日制研究生和非全日制研究生的区别!
![[understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper](/img/38/cc5bb5eaa3dcee5ae2d51a904cf26a.png)
[understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper
随机推荐
A need to review all the knowledge, H5 form is blocked by the keyboard, event agent, event delegation
leetcode 241. Different ways to add parentheses design priority for operational expressions (medium)
Unity之ASE实现全屏风沙效果
[deep learning] semantic segmentation experiment: UNET network /msrc2 dataset
Wechat applet 01
Gd32 F3 pin mapping problem SW interface cannot be burned
What are PV and UV? pv、uv
Window环境下配置Mongodb数据库
[deep learning] image hyperspectral experiment: srcnn/fsrcnn
什么是数据泄露
【原创】一切不谈考核的管理都是扯淡!
The difference between full-time graduate students and part-time graduate students!
MongoDB数据库基础知识整理
【深度学习】语义分割实验:Unet网络/MSRC2数据集
Cocos makes Scrollview to realize the effect of zooming in the middle and zooming out on both sides
Ctfshow, information collection: web9
众昂矿业:萤石继续引领新能源市场增长
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
【数字IC验证快速入门】29、SystemVerilog项目实践之AHB-SRAMC(9)(AHB-SRAMC SVTB Overview)
Qu'est - ce qu'une violation de données