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

概念

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

迭代器:用于迭代数据的一个工具对象,他返回一个对象,包含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()//创建一个斐波拉契迭代器
相关推荐
刘发财35 分钟前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
牛奶3 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶3 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
Kagol6 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
GIS之路7 小时前
ArcGIS Pro 中的 notebook 初识
前端
JavaGuide7 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端
ssshooter7 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
格砸8 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
Live000009 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉9 小时前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化