迭代器实现简单演示:斐波拉契取值

概念

首先明确迭代概念:从一个数据集合中,按照一定规律可控的取出数据。

迭代器:用于迭代数据的一个工具对象,他返回一个对象,包含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()//创建一个斐波拉契迭代器
相关推荐
圆心角几秒前
浏览器垃圾回收机制-面试足够了
前端·浏览器·v8
云边散步3 分钟前
《校园生活平台从 0 到 1 的搭建》第三篇:后端的微信授权登录
前端·后端
猫和老许11 分钟前
Vue 3 拖拽排序功能优化实现:从原理到实战应用
前端·javascript·vue.js
YGY_Webgis糕手之路14 分钟前
Leaflet 综合案例 - 路径规划
前端·gis
sq80015 分钟前
ag-grid-vue3 降级,支持低版本浏览器
前端·javascript·vue.js
前端灵派派15 分钟前
cesium 实现轨迹回放
前端·cesium
水纹16 分钟前
继续研究pdfjs保存和还原批注
前端
程序员海军17 分钟前
使用 Kiro AI IDE 3小时实现全栈应用Admin系统
前端·后端·aigc
你这个年龄怎么睡得着的20 分钟前
玩转vite性能优化
前端·vue.js·vite
YGY_Webgis糕手之路20 分钟前
OpenLayers 综合案例-热力图
前端·gis