带你读《现代Javascript高级教程》十五、Iterator 迭代器:简化集合遍历的利器(1)

简介: 带你读《现代Javascript高级教程》十五、Iterator 迭代器:简化集合遍历的利器(1)

十五、Iterator 迭代器:简化集合遍历的利器

引言

在 JavaScript 中,迭代器(Iterator)是一种用于遍历集合的接口。迭代器提供了一种统一的方式来访问集合中的元素,无论集合的类型和内部结构如何。通过使用迭代器,我们可以轻松地遍历数组、对象、Map、Set 等各种数据结构,并进行相应的操作。本文将详细介绍迭代器的概念、属性、应用场景,并提供相关的代码示例。

1. 迭代器的概念

迭代器是一种遍历集合的接口,它提供了统一的方式来访问集合中的元素。迭代器对象是一个具有特定结构的对象,其中包含一个 next 方法,用于返回集合中的下一个元素。

迭代器的工作原理如下:

 

  • 创建一个迭代器对象,通常通过调用集合对象的 Symbol.iterator 方法来获取迭代器对象。
  • 2.调用迭代器对象的 next 方法,每次调用都会返回一个包含 value done 两个属性的对象。
  • value 表示集合中的一个元素。
  • done 表示迭代是否已完成,如果为 true,则表示迭代结束;如果为 false,则表示还有更多元素可供遍历。

 

  • 重复调用 next 方法,直到迭代结束。

JavaScript 中的数组、对象、Map、Set 等数据结构都实现了迭代器接口,因此我们可以使用迭代器来遍历它们的元素。

 

2. 迭代器的属性

迭代器对象具有以下两个重要的属性:

 

  • next() 方法:该方法返回一个包含 valuedone 两个属性的对象。
  • ovalue:表示集合中的一个元素。
  • odone:表示迭代是否已完成,如果为 true,则表示迭代结束;如果为 false,则表示还有更多元素可供遍历。

 

  • Symbol.iterator 方法:该方法返回迭代器对象自身,用于支持迭代器的迭代。

3. 迭代器的应用场景

迭代器在 JavaScript 中有许多应用场景,下面是一些常见的应用场景:

1)数组遍历

使用迭代器可以轻松遍历数组的所有元素。通过调用数组对象的 Symbol.iterator 方法,可以获取一个迭代器对象,然后使用迭代器的 next 方法逐个访问数组的元素。

 

示例代码:

 

const arr = [1, 2, 3, 4, 5];const iterator = arr[Symbol.iterator]();
let result = iterator.next();while
 (!result.done) {
  console.log(result.value);
  result = iterator.next();}

2)对象遍历

使用迭代器可以遍历对象的所有属性。通过调用对象的 Symbol.iterator 方法,可以获取一个迭代器对象,然后使用迭代器的 next 方法逐个访问对象的属性。

 

示例代码:

 

const obj = { a: 1, b: 2, c: 3 };const iterator = Object.keys(obj)[Symbol.iterator]();
let result = iterator.next();while (!result.done) {
  const key = result.value;
  console.log(key, obj[key]);
  result = iterator.next();}

3) Map 遍历

使用迭代器可以遍历 Map 对象的所有键值对。通过调用 Map 对象的 entries() 方法,可以获取一个迭代器对象,然后使用迭代器的 next 方法逐个访问 Map 的键值对。

 

示例代码:

 

const map = new Map([["a", 1], ["b", 2], ["c", 3]]);const iterator = map.entries();
let result = iterator.next();while (!result.done) {
  const [key, value] = result.value;
  console.log(key, value);
  result = iterator.next();}


带你读《现代Javascript高级教程》十五、Iterator 迭代器:简化集合遍历的利器(2)https://developer.aliyun.com/article/1349586?groupCode=tech_library

相关文章
|
4月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
193 19
|
7月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
6547 24
|
JavaScript 前端开发 索引
js遍历的方法与区别
js遍历的方法与区别
155 3
|
11月前
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
390 2
2024年5月node.js安装(winmac系统)保姆级教程
|
JavaScript 前端开发
js教程——函数
js教程——函数
269 4
|
JavaScript 前端开发
JavaScript基础知识-数组的遍历
关于JavaScript数组遍历基础知识的文章。
96 2
JavaScript基础知识-数组的遍历
|
JavaScript 前端开发 索引
JavaScript HTML DOM 集合(Collection)
JavaScript HTML DOM 集合(Collection)
118 4
|
JavaScript 索引
|
JavaScript
js之遍历方法
js之遍历方法
86 0
|
JavaScript NoSQL 前端开发

热门文章

最新文章