迭代器Iterator、生成器Generator详解

简介: 迭代器Iterator、生成器Generator详解

在讲Generator(生成器)之前,要先一起了解一下另外一个概念,迭代器

一、迭代器 Iterator

迭代器Iterator 是 ES6 引入的一种新的遍历机制,同时也是一种特殊的对象,它具有一些专门为迭代过程设计的专有接口;


每一个迭代器对象 都有一个 next() 方法,每次调用都会返回一个当前结果对象。


当前结果对象中有两个属性:


       1.value:  当前属性的值


       2.done:  用于判断是否遍历结束,当没有更多可返回的数据时,返回 true


       每调用一次 next() 方法,都会返回下一个可用的值,知道遍历结束。

二、生成器 Generator

生成器是一种返回迭代器的函数,通过 function 关键字后的( * )来表示,函数中会用到新的关键字 yield 。星号可以紧挨着 function 关键字,也可以在中间添加一个空格。

function* generator(){
    const list = [1,2,3];
    for(let i of list){
        yield i
    }
}
let g = generator();
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 1, done: true}

三、特性

1. 每当执行完一条 yield 语句后函数就会自动停止运行,直到再次调用 next();


2. yield 关键字只可在生成器(Generator)内部使用,在其他地方使用会导致程序抛出错误;


3. 可以用函数表达式来创建生成器,但是不能使用箭头函数


比较常用的地方是在 stream 数据流处理的时候,会用到迭代器!

20210527153548522.png

20210527153548522.png

20210527153548522.png

20210527153548522.png

相关文章
|
安全 Python
Python Web 开发: 在 Flask 中如何处理文件上传?
Python Web 开发: 在 Flask 中如何处理文件上传?
931 0
|
存储 安全 编译器
【Qt 底层机制之信号和槽 】深入探究Qt信号和槽背后的原理
【Qt 底层机制之信号和槽 】深入探究Qt信号和槽背后的原理
4141 4
|
机器学习/深度学习 人工智能
谷歌发AI足球教练模型TacticAI 登Nature子刊
【2月更文挑战第30天】谷歌DeepMind与利物浦FC合作开发的TacticAI是一款人工智能足球战术助手,能分析角球战术并提供建议,已在《Nature Communications》发表。利用图机器学习和几何深度学习,TacticAI预测角球战术并在90%情况下优于传统方法。该系统有助于教练制定精准战术,但实际比赛中的适应性和数据隐私限制了其潜力的完全发挥。
889 2
谷歌发AI足球教练模型TacticAI 登Nature子刊
|
10月前
|
人工智能 自然语言处理 供应链
深度揭秘 RPA:从录屏脚本到智能员工,它的进化之路有多惊艳?
RPA机器人是能自动处理重复性工作的“数字员工”,通过模拟人工操作,实现数据录入、报表填报等任务的自动化。它非实体、不需编程,广泛应用于金融、制造、医疗等领域,提升效率、降低错误。未来,AI赋能的RPA将更智能、普惠,推动人机协同新变革。(239字)
1472 1
|
5月前
|
人工智能 机器人 芯片
人工智能|YOLOv8实战
本内容为安全帽检测实战项目,基于YOLOv8模型,涵盖Kaggle数据获取、自定义yaml配置、模型训练(yolo_train.py)与测试(yolo_test.py),并提供服务器(FastAPI+Docker)、边缘(Jetson+TensorRT)及国产嵌入式(RK3588+RKNN)三类部署方案,支持工业场景实时智能识别。(239字)
641 1
|
5月前
|
人工智能 运维 数据可视化
2026年思维导图工具深度横评:7款主流平台技术向实测与选型建议
本文深度实测7款主流在线思维导图工具(ProcessOn、GitMind、boardmix、NuromBoard、MindMaster、知犀、幕布),从核心功能、AI能力、协作支持、免费可用性及场景匹配五大维度横向对比,专为技术从业者提供真实、客观、可落地的选型指南。
1703 2
|
6月前
|
存储 运维 数据可视化
2026年企业数据分析系统建设费用预算清单:详细成本解析
本文系统梳理企业数据分析系统建设的全成本构成,涵盖基础设施、软件许可、实施开发、运维支持及人员培训五大模块,并以瓴羊Quick BI为例详解其弹性计费模式与预算控制策略,助力企业制定可执行、可优化的2026年度数据分析预算清单。(239字)
|
6月前
|
缓存 JSON 监控
淘宝拍立淘 API(taobao.item.search.img)
一句话说明:上传图片(URL/Base64),返回淘宝同款 / 相似商品列表,用于比价、内容带货、同款监控。
|
11月前
|
人工智能 监控 物联网
当技术面试聊到“大模型微调”,你应该怎么回答?
近两年测试开发跳槽常遇“大模型微调”面试题。AI已深入测试领域,从数据生成到智能分析,均需掌握微调机制。本文梳理35个高频问题,涵盖显存计算、SFT实践、数据构建、灾难性遗忘等核心知识点,助你理解预训练与微调差异、LoRA应用及评测集设计。测试人应聚焦模型可控性、质量评估与训练监控,掌握AI时代新竞争力。
|
存储 C语言
C 标准库 - <stdlib.h>详解
`&lt;stdlib.h&gt;` 是 C 语言标准库中的头文件,提供了多种工具和函数,涵盖内存管理、进程控制、转换及随机数生成等功能。其中包括 `malloc`、`calloc` 和 `free` 等内存管理函数,`atoi` 和 `atof` 等转换函数,以及 `rand` 和 `srand` 等随机数生成函数。此外,还提供了 `exit` 和 `atexit` 等程序控制函数,以及 `getenv` 和 `system` 等环境控制函数。
2849 11

热门文章

最新文章