Iterator接口(遍历器)和for/of循环

Posted tangjiao_Miya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Iterator接口(遍历器)和for/of循环相关的知识,希望对你有一定的参考价值。

只要某个数据结构部署了Iterator接口,就可以使用拓展运算符将其转化为数组。

let arr = [...iterator];

var str = ‘hello‘;
[...str]  //["h", "e", "l", "l", "o"]

yield* 后面跟的是一个可遍历的结构,它会调用该结构的遍历器接口。

let generator = function* (){
    yield 1;
    yield* [2,3,4];
    yield 5;
}
var it = generator();
it.next();  //{value: 1, done: false}
it.next()   //{value: 2, done: false}
it.next()   //{value: 3, done: false}
it.next()   //{value: 4, done: false}
it.next()   //{value: 5, done: false}
it.next()   //{value: undefined, done: true}

数组的遍历会调用遍历器接口,所以任何接受数组作为参数的场合,其实都调用了Iterator接口,如下:

for/of    Array.from()   Map()    Set()   WeakMap()   WeakSet()  Promise.all()  Promise.rece()

 

1,字符串的Iterator接口

var str = ‘hi‘;
typeof str[Symbol.iterator]    //‘function‘

var a = str[Symbol.iterator]();
a.next()   //{value: "h", done: false}
a.next()   //{value: "i", done: false}

[...str]     //["h", "i"]

以前字符串转化为数组:str.split(""),ES6中可以使用Iterator进行遍历加入数组中,相当简洁。

 

以上是关于Iterator接口(遍历器)和for/of循环的主要内容,如果未能解决你的问题,请参考以下文章

ES6—— iterator和for-of循环

遍历器 for...of 循环

Iterator 和 for...of 循环

es6 Iterator和for...of循环

15.Iterator和for...of循环

ES6 - 基础学习(13): Iterator(迭代器) 和 for...of 循环