当前位置:网站首页>ES6 iterator explanation example
ES6 iterator explanation example
2022-08-02 03:59:00 【yorup】
Iterator
Iterator is an interface that provides a unified access mechanism for various data structures.Any data structure can complete the traversal operation as long as the lterator interface is deployed. ES6 adds the traversal method for...of.
The native data with the iterator interface are: Array, Arguments, Set, Map, String, NodeList.
The object does not have an iterator interface, but we can add one to it. The iterator is the method that comes with the data type, so add it to the object.One method is the iterator interface.
Be careful not to change the method name.Because for...of can only recognize the next() method.
Principle: Create a pointer object, pointing to the starting position of the data structure, the first time the ==next()== method is called, the pointer automatically points to the data structureThe first member, and then continue to call next(), the pointer moves backward until it points to the last member, without calling next() to return an object containing the value and done properties.
let arr = ["a","b","c"];let myIte = arr[Symbol.iterator]();//arr itself has an iterator interface, get this iterator interfaceconsole.log(myIte.next());//{value: "a", done: false}console.log(myIte.next());//{value: "b", done: false}console.log(myIte.next());//{value: "c", done: false}console.log(myIte.next());//{value: "undefined", done: true}
const Stu = {title:"web2209",persons:["Zhang San","Li Si","Wang Wu"],[Symbol.iterator](){let i=0;return {next:()=>{if(i< this.persons.length){const Obj = {value: this.persons[i], done: false};i++;return Obj;}else{return {value: undefined, done: true};}}}}}
The iterator interface method [Symbol.iterator]() is added to the object above, the following is the call, print it first
const Myite = Stu[Symbol.iterator]();console.log(Myite.next());console.log(Myite.next());console.log(Myite.next());console.log(Myite.next());
The following is to use for...of to traverse the values in the object
for(let v of Stu){console.log(v);}
边栏推荐
- [symfony/mailer]一个优雅易用的发送邮件类库
- 解决 Zlibrary 卡死/找不到域名/达到限额问题,Zlibrary最新地址
- TypeScript error error TS2469, error TS2731 solution
- hackmyvm: again walkthrough
- Orasi: 1 vulnhub walkthrough
- [mikehaertl/php-shellcommand]一个用于调用外部命令操作的库
- Turn trendsoft/capital amount of Chinese capital library
- Various ways of AES encryption
- Several interesting ways to open PHP: from basic to perverted
- CTF入门笔记之SQL注入
猜你喜欢
(5) Modules and packages, encoding formats, file operations, directory operations
hackmyvm: controller walkthrough
(3) Thinkphp6 database
动力:2 vulnhub预排
The roll call system and array elements find maximum and minimum values for sorting of objects
Kali install IDEA
DarkHole: 2 vulnhub walkthrough
PHP入门(自学笔记)
hackmyvm: kitty walkthrough
(1) introduction to Thinkphp6, installation view, template rendering, variable assignment
随机推荐
CTF入门笔记之ping
Baidu positioning js API
PHP的几个有趣的打开方式:从基本到变态
Shuriken: 1 vulnhub walkthrough
c语言用栈实现计算中缀表达式
[campo/random-user-agent] Randomly fake your User-Agent
PHP有哪些杀手级超厉害框架或库或应用?
查询数据库中所有表的索引,并且解析成sql
hackmyvm-bunny预排
New usage of string variable parsing in PHP8.2
攻防世界—MISC 新手区1-12
MOMENTUM: 2 vulnhub walkthrough
Turn trendsoft/capital amount of Chinese capital library
(3) 字符串
Eric靶机渗透测试通关全教程
PHP图片压缩到指定的大小
PHP8.2的版本发布管理员和发布计划
16.JS事件, 字符串和运算符
Thread Pool (Introduction and Use of Thread Pool)
(2)Thinkphp6模板引擎**标签