迭代器
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