概念
首先明确迭代概念:从一个数据集合中,按照一定规律可控的取出数据。
迭代器:用于迭代数据的一个工具对象,他返回一个对象,包含next方法(用于下一次的迭代),value值(迭代目标值)done参数(是否迭代完成)
示例代码(一个简单数组迭代器)
js
let arr1 = [1, 2, 3, 4, 5]
function creatItertor (arr) {//迭代生成器
let index = 0//数组下标
let result = {//迭代对象
value: null,
done: false
}
return {
next () {
if (index >= arr.length) {
result.done = true
console.log('已经迭代完成了!', result)
return
}
result.value = arr[index]
index++
return result
}
}
}
const Itertor1 = creatItertor(arr1)//创建一个迭代器
斐波拉契迭代
斐波拉契数列[1 1 2 3 5 8 13 ...]
js
function creatFeiboItertor () {
let curIndex = 1//生成位置索引
let firstIndexVal = 1//相加位第一位值
let secendIndexVal = 1//相加位第二位值
let result = {//迭代对象
value: null,
done: false
}
return {
next () {
if (curIndex <= 2) {
result.value = 1
} else {
result.value = firstIndexVal + secendIndexVal
firstIndexVal = secendIndexVal
secendIndexVal = result.value
}
curIndex++
return result
}
}
}
const FeiboItertor = creatFeiboItertor()//创建一个斐波拉契迭代器