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

  }
相关推荐
foundbug9996 分钟前
最优化问题的外点罚函数法与内点罚函数法-MATLAB实现
开发语言·matlab
弹简特8 分钟前
【零基础学Python】05-Python函数完全指南:从初阶定义到进阶参数,一篇打通核心难点
开发语言·python
AugustRed13 分钟前
A2UI 完整学习指南(含 Java 后端 + 前端实战示例)
java·开发语言·前端
jingling55521 分钟前
自建技术博客实战(三):工具专栏——地图定位、声音复刻与 rembg 抠图
android·开发语言·前端·ai·nextjs
basketball61622 分钟前
C++进阶:1. 引用折叠规则
java·开发语言·c++
橘子味的冰淇淋~31 分钟前
优化前端性能之从“全局引入”改为“按需引入”
前端·javascript·vue.js
Deep-w42 分钟前
【MATLAB】基于模型预测控制的自适应巡航车辆过渡工况安全控制研究
开发语言·人工智能·算法·机器学习·matlab
Java_2017_csdn43 分钟前
Java 策略模式(Strategy Pattern)-(三)
java·开发语言·servlet
许彰午1 小时前
06_Java面向对象入门
java·开发语言·python
Java_2017_csdn1 小时前
Java 策略模式(Strategy Pattern)-(二)
java·开发语言·策略模式