概述
一·迭代器
1.迭代器是什么:
迭代器(iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署iterator接口,就可以完成遍历操作。
2.迭代是什么:
从一个数据集合中按照一定顺序,不断取出数据的过程我们叫做迭代
3.迭代和遍历有什么区别:
遍历必须知道数据集合的长度,而迭代不需要
迭代强调的是依次取出,不能够确定到底能取出来多少,也不确定能不能把数据取完
3.迭代器需要满足的条件:
**迭代器必须有得到下一个数据的能力
4.属性:symbol(symbol.iterator):f valuse()
const arr = [1, 2, 3, 4, 5]
console.log(arr);
//创建一个指针对象,由Symbol.iterator创建
let iterator = arr[Symbol.iterator]()
console.log(iterator); //具有next方法
//第一次调用next方法,指针自动指向数据结构的第一个成员
console.log(iterator.next()); //{value:1,done:false};done表示是否迭代完成
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next()); //{value:undefined,done:true};完成
一个简单的迭代器
const arr = [1, 2, 3, 4, 5]
const iterator = {
i: 0,
next() {
let result = {
value: arr[this.i],
done: this.i >= arr.length
}
this.i++;
return result;
}
}
let data = iterator.next()
while (!data.done) {
console.log(data.value)
data = iterator.next()
}
console.log("迭代完成")
二·生成器
1.什么是生成器:
生成器其实就是一个特殊的函数
调用生成器会产生一个生成器对象,具有next方法,调用这个方法会让生成器开始或恢复执行
function* fun() {
console.log(1)
console.log(2)
console.log(3)
}
const iterator = fun()
console.log(iterator) //一个迭代器对象,具有next方法
iterator.next() //1 //2 //3
2.yield;函数代码的分割
生成器在遇到yield前正常执行,遇到后停止执行,再次调用next才能回复执行
function* fun() {
console.log(1)
yield 'a';
console.log(2)
yield 'b';
console.log(3)
}
const iterator = fun()
console.log(iterator.next()) //执行第一段代码 打印1 next返回结果:{value: 'a', done: false}
console.log(iterator.next()) //执行第二段代码 打印2
console.log(iterator.next()) //3
next返回{value: undefined, done: true}
3.API
return()提前结束整个生成器函数,迭代过程也提前结束
throw()可以在生成器内部跑出一个错误,抛出到对应的行
function* fun1() {
yield 'a';
yield 'b';
}
function* fun2() {
yield* fun1()
yield '1';
yield '2';
yield '3';
}
const a = fun2()
console.log(a.next());//{value: 'a', done: false}
console.log(a.next());//{value: 'b', done: false}
console.log(a.next());//{value: '1', done: false}
console.log(a.next());//{value: '2', done: false}
4.在生成器内部用别的生成器
最后
以上就是活力冥王星为你收集整理的ES6 迭代器与生成器的全部内容,希望文章能够帮你解决ES6 迭代器与生成器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复