迷人的迭代器

迭代器

1.什么是迭代?
从一个数据集合中按一定顺序,不断取出数据的过程是迭代
2.和遍历的区别?
遍历强调要把所有数据全部取出
迭代强调依次取数据,不保证取多少和取完数据
3.什么是迭代器?
对迭代过程的封装,通常是一个对象
4.迭代模式
一种设计模式,统一迭代过程,规范迭代器规格

  • 迭代器应该具有得到下一个数据的能力
  • 迭代器应该具有判断是否还有后续数据的能力

js中的迭代器

js规定,如果一个对象具有next方法,并且该方法返回一个对象,格式如下:

{value :, done : 是否迭代完成}

就认为这是一个迭代器
意义
next方法:用于得到下一个数据

  • 返回的对象
    • value:下一个值
    • done:boolean:是否迭代完成

例子

1.对象迭代器

const arr = [1,2,3,4,5];
const iterator = {
	i : 0,
	next(){
		var 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('迭代完成');

在这里插入图片描述
2.迭代器创建函数

function create(arr){
	let i = 0;
	return {
		next(){
			var result = {
				value : arr[i],
				done : i >= arr.length
			}
			i++;
			return result;
		}
	}
}
const arr1 = [1,2,3,4,5];
const arr2 = ['a','b','c'];
const create1 = create(arr1);
const create2 = create(arr2);
console.log(create1.next());
console.log(create2.next());

在这里插入图片描述
当没有数据后,返回undefined
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值