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

概念

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

迭代器:用于迭代数据的一个工具对象,他返回一个对象,包含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()//创建一个斐波拉契迭代器
相关推荐
anxiao_m6 分钟前
水利数字孪生怎么选?主流可视化渲染平台深度横向测评
大数据·前端·人工智能·图形渲染·云渲染
kill52215 分钟前
useRef
前端·javascript·react.js
蓝悦无人机17 分钟前
从“摸形状“到“点到线面的距离“——聊聊 SLAM 前端(激光雷达篇)
前端·loam·数据关联·激光slam·点云特征提取·点到线面距离·icp/ndt
flash俊杰1 小时前
工程约束怎么不拖后腿
前端
霍营_托尼1 小时前
纯前端播 40GB 本地视频?我把浏览器改造成了「磁盘流式」播放器
前端·javascript·音视频开发
溪语流沙1 小时前
【Web全栈进阶】FastAPI工程化:APIRouter拆分 + 配置 + 依赖注入
java·前端·fastapi
Shirley~~1 小时前
Three.js的基础概念
前端·3d
deli0071 小时前
黏菌没有大脑,3000 个 Physarum 粒子跑 12973 步自己铺出了迷宫最短路
前端
凌云若寒1 小时前
BarTender提示#807错误:无法在拥有其他许可证的Licensing Service上激活节点锁定的 Professional 版许可证 的解决办法
运维·服务器·前端·学习·软件需求
嘟嘟同学和妮妮同学1 小时前
用原生 JS 做了一个中国历史帝皇梳理的可视化站(7 朝 77 帝 + Leaflet 地图)
前端