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

概念

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

迭代器:用于迭代数据的一个工具对象,他返回一个对象,包含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()//创建一个斐波拉契迭代器
相关推荐
天天打码13 分钟前
Rspack:字节跳动自研 Web 构建工具-基于 Rust打造高性能前端工具链
开发语言·前端·javascript·rust·开源
字节高级特工18 分钟前
【C++】”如虎添翼“:模板初阶
java·c语言·前端·javascript·c++·学习·算法
db_lnn_20211 小时前
【vue】全局组件及组件模块抽离
前端·javascript·vue.js
Qin_jiangshan1 小时前
vue实现进度条带指针
前端·javascript·vue.js
菜鸟una1 小时前
【layout组件 与 路由镶嵌】vue3 后台管理系统
前端·vue.js·elementui·typescript
小张快跑。1 小时前
【Vue3】使用vite创建Vue3工程、Vue3基本语法讲解
前端·前端框架·vue3·vite
Zhen (Evan) Wang2 小时前
.NET 8 API 实现websocket,并在前端angular实现调用
前端·websocket·.net
星空寻流年2 小时前
css3响应式布局
前端·css·css3
Rverdoser2 小时前
代理服务器运行速度慢是什么原因
开发语言·前端·php
航Hang*3 小时前
前端项目2-01:个人简介页面
前端·经验分享·html·css3·html5·webstorm