js迭代器模式

以前JS原生的集合类型数据结构,只有Array(数组)和Object(对象);

而ES6中,又新增了Map和Set。四种数据结构各自有着自己特别的内部实现,但我们仍期待以同样的一套规则去遍历它们,所以ES6在推出新数据结构的同时也推出了一套统一的接口机制------迭代器(Iterator)。

ES6约定,任何数据结构只要具备Symbol.iterator属性(这个属性就是Iterator的具体实现,它本质上是当前数据结构默认的迭代器生成函数),就可以被遍历------准确地说,是被for...of...循环和迭代器的next方法遍历。 事实上,for...of...的背后正是对next方法的反复调用。

js 复制代码
// 定义一个迭代器对象

const iterator = {

    next() {

      // 返回当前迭代的元素和是否完成迭代的标志

      return { value: 1, done: false };

    }

  };

  // 使用迭代器对象进行迭代

  let result = iterator.next();

  while (!result.done) {

    console.log(result.value);

    result = iterator.next();

  }
相关推荐
MrJson-架构师13 小时前
AgentScope Java 2.0:打造分布式、企业级智能体底座
java·开发语言·分布式
凡人叶枫13 小时前
Effective C++ 条款01:视 C++ 为一个语言联邦
linux·开发语言·c++·effective c++·编程范式·语言联邦
我爱吃土豆113 小时前
Agent 的记忆机制
开发语言·数据库·人工智能
白露与泡影13 小时前
SEATA:Server 到 Golang Client 全链路走读
开发语言·后端·golang
小小龙学IT13 小时前
Go 后端开发实战:构建高性能 RESTful API 服务
开发语言·golang·restful
fengxin_rou13 小时前
深入理解Java类加载机制:从原理到实战详解
java·开发语言
薇茗13 小时前
【C++】类与对象 核心篇
开发语言·c++
AI浩13 小时前
【数据处理】基于 SAM3 的 LabelMe 标注统一校正方法
android·开发语言·kotlin
晓得迷路了13 小时前
栗子前端技术周刊第 132 期 - date-fns 支持 Temporal、npm 攻击事件、VoidZero...
前端·javascript·css
原来是猿13 小时前
理解 C++ 哈希表的原理与工程实践
开发语言·c++·散列表