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

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

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


4 Set 遍历

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

 

 

示例代码:

 

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

4. 自定义迭代器

除了使用内置数据结构提供的迭代器之外,我们还可以自定义迭代器来遍历自定义数据结构。要实现一个自定义迭代器,我们需要定义一个具有 next 方法的对象,并且该对象的 next 方法需要返回一个包含 value 和 done 属性的对象。

 

示例代码:

 

const myIterable = {
  data: [1, 2, 3, 4, 5],
  [Symbol.iterator]() {
    let index = 0;
    return {
      next: () => {
        if (index < this.data.length) {
          return { value: this.data[index++], done: false };
        } else {
          return { value: undefined, done: true };
        }
      },
    };
  },};
for (const item of myIterable) {
  console.log(item);}

 

在上面的示例中,我们定义了一个自定义数据结构 myIterable,它包含一个数组 data 和一个自定义的迭代器对象。迭代器对象的 next 方法会依次返回数组中的元素,并在遍历结束时返回 { value: undefined, done: true }。

  1. 结论

迭代器是 JavaScript 中一种强大且灵活的机制,它提供了一种统一的方式来遍历集合中的元素。通过使用迭代器,我们可以轻松地遍历数组、对象、Map、Set 等各种数据结构,并进行相应的操作。迭代器的应用场景非常广泛,它使我们能够以一种简洁而优雅的方式处理数据集合。熟练掌握迭代器的使用方法对于编写高效和可维护的代码非常重要。

  1. 参考资料
  • MDN Web Docs - Iteration protocolsopen in new window
  • Understanding Iterators and Iterables in JavaScriptopen in new window
  • JavaScript Iterators and Generators: Asynchronous Iteration

 

相关文章
|
1月前
|
JavaScript 前端开发
JavaScript如何遍历表单元素?
JavaScript如何遍历表单元素?
|
2月前
|
JavaScript 前端开发 网络协议
​Node.js 教程(一) 基本概念与基本使用
​Node.js 教程(一) 基本概念与基本使用
|
2月前
|
JavaScript 前端开发
js遍历对象的方法
js遍历对象的方法
40 1
|
3月前
|
JavaScript 前端开发 定位技术
JavaScript 中如何代理 Set(集合) 和 Map(映射)
JavaScript 中如何代理 Set(集合) 和 Map(映射)
50 0
|
1月前
|
JavaScript 前端开发 索引
JavaScript字符串检查:从基础到高级
【2月更文挑战第26天】
26 0
JavaScript字符串检查:从基础到高级
|
4天前
|
JavaScript 索引
JS 几种循环遍历
JS 几种循环遍历
8 0
JS 几种循环遍历
|
30天前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(六)
JavaScript高级笔记-coderwhy版本
74 0
|
30天前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(一)
JavaScript高级笔记-coderwhy版本
34 0
JavaScript高级笔记-coderwhy版本(一)
|
1月前
|
JavaScript 前端开发 API
JavaScript循环遍历常用的7种方法以及常用的数组 API
JavaScript循环遍历常用的7种方法以及常用的数组 API
35 0
|
1月前
|
JavaScript 前端开发 网络架构
JavaScript的数组教程(最详细,更新至es6新语法)
JavaScript的数组教程(最详细,更新至es6新语法)