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

原网站

版权声明
本文为[yorup]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/214/202208020322054402.html