当前位置:网站首页>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 :
边栏推荐
- 什麼是數據泄露
- 【数字IC验证快速入门】26、SystemVerilog项目实践之AHB-SRAMC(6)(APB协议基本要点)
- [机缘参悟-40]:方向、规则、选择、努力、公平、认知、能力、行动,读3GPP 6G白皮书的五层感悟
- 知否|两大风控最重要指标与客群好坏的关系分析
- The download button and debug button in keil are grayed out
- Jacobo code coverage
- Getting started with webgl (1)
- 全日制研究生和非全日制研究生的区别!
- 银行需要搭建智能客服模块的中台能力,驱动全场景智能客服务升级
- [markdown grammar advanced] make your blog more exciting (IV: set font style and color comparison table)
猜你喜欢
Ctfshow, information collection: web9
【数字IC验证快速入门】20、SystemVerilog学习之基本语法7(覆盖率驱动...内含实践练习)
Write a ten thousand word long article "CAS spin lock" to send Jay's new album to the top of the hot list
【服务器数据恢复】某品牌StorageWorks服务器raid数据恢复案例
MySQL bit type resolution
2. 堆排序『较难理解的排序』
With 8 modules and 40 thinking models, you can break the shackles of thinking and meet the thinking needs of different stages and scenes of your work. Collect it quickly and learn it slowly
[follow Jiangke University STM32] stm32f103c8t6_ PWM controlled DC motor_ code
What is Base64?
Qu'est - ce qu'une violation de données
随机推荐
What are PV and UV? pv、uv
Ctfshow, information collection: web8
【数据挖掘】视觉模式挖掘:Hog特征+余弦相似度/k-means聚类
使用Scrapy框架爬取网页并保存到Mysql的实现
【數字IC驗證快速入門】20、SystemVerilog學習之基本語法7(覆蓋率驅動...內含實踐練習)
Matlab experience summary
Zhongang Mining: Fluorite continues to lead the growth of new energy market
微信小程序 01
[server data recovery] data recovery case of raid failure of a Dell server
Getting started with webgl (3)
一个需求温习到的所有知识,h5的表单被键盘遮挡,事件代理,事件委托
With 8 modules and 40 thinking models, you can break the shackles of thinking and meet the thinking needs of different stages and scenes of your work. Collect it quickly and learn it slowly
[understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper
Configure mongodb database in window environment
[deep learning] semantic segmentation experiment: UNET network /msrc2 dataset
STM32F103C8T6 PWM驱动舵机(SG90)
什麼是數據泄露
Detailed explanation of Cocos creator 2.4.0 rendering process
众昂矿业:萤石继续引领新能源市场增长
[机缘参悟-40]:方向、规则、选择、努力、公平、认知、能力、行动,读3GPP 6G白皮书的五层感悟