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();

  }
相关推荐
ttwuai1 分钟前
Go后台管理系统开源项目有哪些?如何按交付形态筛掉不合适的仓库
开发语言·golang·开源
yuniko-n13 分钟前
【Java】关于容器选型:Deque、PriorityQueue、LinkedList
java·开发语言
扶风ff14 分钟前
练题簿在线免费刷题:创建个人任务,把刷题、听题和模考目标放到每天的学习中
开发语言·javascript·学习·小程序
asong25 分钟前
没有源代码,AI 也能拆解软件:这个开源项目已有 3.7 万 Star
javascript·后端·github
yuniko-n26 分钟前
【JUC】wait 和 sleep
java·开发语言
用户17335980753727 分钟前
纯前端 PDF 压平避坑指南:压平后表单字段变了?
前端·javascript·vue.js
kimnoic30 分钟前
Python常见模块及其用法示例详解
开发语言·python
程序员-Benothing41 分钟前
Linux文本排序统计命令:sort、uniq、wc、cut、tr实战
java·开发语言·算法
CRMEB42 分钟前
前后端技术栈全面换代!CRMEB 多商户(Java)v3.0更新预告
java·开发语言
用户2986985301443 分钟前
React 中实现 Word 与 Markdown 双向转换的实践记录
javascript·react.js·markdown