前端 JS 经典:迭代器

在 JavaScript 中,迭代器是一个对象,它定义了一个序列,并在终止时可能返回一个返回值。更具体地说,迭代器是通过使用**next()**方法实现迭代器协议(Iterator protocol)的任何对象,该方法返回具有两个属性的对象:

**value:**表示序列中的下一个值。

**done:**它是一个布尔类型的值,如果已经迭代到序列中的最后一个值,则为 true。

迭代器会保存一个内部指针,用来指向当前集合中值的位置。每调用一次 next()方法,都会返回下一个可用的值。如果在最后一个值返回后再调用 next()方法,那么返回的对象中属性 done 的值为 true,属性 value 则包含迭代器最终返回的值(如果没有相关数据则返回 undefined)。

JavaScript 中有一些内置的可迭代对象,如数组、字符串、集合(Set)、映射(Map)等,它们都具有默认的迭代器。例如,可以使用 for...of 循环来遍历这些可迭代对象。

以下是一个简单的迭代器示例:

javascript 复制代码
function createIterator(items) {

  let i = 0;

  return {

    next: function () {

      let done = i >= items.length;

      let value = !done ? items[i++] : undefined;

      return { done: done, value: value };

    },

  };

}

var iterator = createIterator([1, 2, 3]);

console.log(iterator.next()); // { done: false, value: 1 }

console.log(iterator.next()); // { done: false, value: 2 }

console.log(iterator.next()); // { done: false, value: 3 }

console.log(iterator.next()); // { done: true, value: undefined }

在上述示例中,createIterator函数返回了一个自定义的迭代器对象,通过调用 next 方法可以逐步获取数组中的元素。

并非所有对象都是可迭代的,普通对象默认不可迭代。但可以通过为对象添加Symbol.iterator属性并使其返回一个符合迭代器协议的对象,将自定义对象变为可迭代对象。

可迭代对象具有 Symbol.iterator 属性,通过指定的函数可以返回一个作用于附属对象的迭代器。迭代器的使用可以让代码更简洁、更灵活地处理数据序列,并且能够更好地处理一些复杂的数据结构和迭代逻辑。它提供了一种统一的方式来遍历不同类型的集合,而无需关心集合内部的具体实现细节。

相关推荐
聆风吟º20 分钟前
【金仓数据库征文】Java 应用接入金仓数据库:从驱动、连接池到存储过程调试的踩坑实录
java·开发语言·数据库
码林鼠27 分钟前
2026前端面试题(二)
前端
不会代码的小猴1 小时前
11. 类和动态内存分配
开发语言·c++
似璟如你2 小时前
Java 开发者的 Go 语法基础:从 0 开始快速上手 Go
java·开发语言·后端·golang·go·编程语言
LccKyI2 小时前
C#学习day05(开发福彩双色球系统附思维导图)
开发语言·学习·c#
zzz_23682 小时前
TencentDB-Agent-Memory 深度解析:让多个 Agent 共享项目经验的记忆中枢
java·开发语言·jvm·人工智能·agent·memory·tencent db
vx-程序开发2 小时前
django医院预约挂号系统---附源码23353
java·javascript·spring boot·python·eclipse·django·php
charlie1145141912 小时前
IMX6ULL WM8960 的移植——前置介绍
开发语言·c++·开源项目·嵌入式linux
宿6743 小时前
tsconfig.node.json
前端·javascript·vue.js
小杨互联网3 小时前
Cursor 前端 Dist 自动化逆向框架:/fr 流水线 · 4 脚本 · Vite/Webpack
前端·webpack·自动化·前端逆向框架·ai前端逆向框架