码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-05-16 16:35:14      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:typeof   eof   style   function   iter   col   val   array   cti   

只要某个数据结构部署了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循环

标签:typeof   eof   style   function   iter   col   val   array   cti   

原文地址:https://www.cnblogs.com/tangjiao/p/9046429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!