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循环的主要内容,如果未能解决你的问题,请参考以下文章