如何循环来自生成器的 JavaScript 迭代器?

2024-01-18

假设我们有以下生成器:

var gen = function* () {
  for (var i = 0; i < 10; i++ ) {
    yield i;
  }
};

循环迭代器的最有效方法是什么? 目前我通过手动检查是否done属性设置为true or not:

var item
  , iterator = gen();

while (item = iterator.next(), !item.done) {
  console.log( item.value );
}

迭代任何可迭代对象(支持 @@iterator 的对象)的最佳方法是使用for..of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of, 像这样

'use strict';

function * gen() {
    for (var i = 0; i < 10; i++) {
        yield i;
    }
}

for (let value of gen()) {
    console.log(value);
}

或者,如果你想要一个数组,那么你可以使用Array.from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from, 像这样

console.log(Array.from(gen());
// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何循环来自生成器的 JavaScript 迭代器? 的相关文章

  • 如何使弹出窗口出现在我的鼠标进入悬停目标的位置?

    这是一个示例代码 用于显示我的按钮下方的弹出窗口 fn popover defaults extend fn tooltip defaults placement bottom content 现在我希望弹出窗口出现在光标移动的位置 不仅是
  • 将 Laravel 集合/数组转换为 Javascript 数组

    我想将 Laravel 中的数组分配给 JavaScript 数组 我已经从我的AppServiceProvider和 json decoded 它像 View composer function view users Users all
  • 如何在react-select v2中创建optgroup?

    我想在我的反应选择列表中包含 optgroups 但它似乎没有记录在任何地方 我有以下结构 是从评论中提取的https github com JedWatson react select issues 59 https github com
  • 使用画布元素作为文本区域

    我正在寻找有关如何使用类似于文本区域的画布元素的直接描述 我见过这样的项目Ace http ace ajax org 只是想知道如何像文本区域一样写入该区域 只是纯文本 没有什么花哨的 提前致谢 Ace 曾经是 Mozilla Skywri
  • 在 HTML5 中使用 JS 创建内联 SVG

    我正在使用本地 HTML5 文件 它有在顶部 我在里面放了这样的东西
  • 茉莉花单元测试 - 测试对象的未定义属性

    我有以下声明 expect A BAR name toEqual foo 由于我的对象 A 具有顶级属性 BAR 并且 bar 具有值 foo 传递 我想测试我的结构以确认属性 NONEXISTINGPROP 尚未定义 例如 expect
  • AWS Lambda 提前结束(没有任何显式返回或回调)

    我在放入 AWS Lambda 中的一些 Node js 代码时遇到了一些问题 我需要进行几个异步调用 虽然第一个调用的行为符合我的预期 但 lambda 函数在第二个调用完成之前终止 返回值为 null 这让我认为 lambda 正在执行
  • 如何在下拉列表中选择一个选项

    我正在使用 AngularJS 指令 我需要在模板中设置下拉列表的选定选项
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • JavaScript 原型 - 请澄清

    有人可以帮我理解原型属性吗 我不明白原型属性是函数的属性还是函数内部的属性 假设我们创建以下构造函数 Food 此时 函数 Food 具有 Food prototype 属性 由于 Food 是 Object 的实例 因此这意味着 Obec
  • Famo.us 滚动视图高度

    我正在尝试使用著名的顺序布局在滚动视图下方添加图像 但滚动视图的高度有问题 这就是我创建滚动视图的方式 var scrollview new Scrollview direction Utility Direction X options
  • 将数组中的所有元素相乘

    我在这里找不到我真正想要的例子 我想将所有数组元素相乘 因此如果数组包含 1 2 3 总和将为 123 6 到目前为止 我已经得到了这段代码 但它返回未定义 function multiply array var sum 1 for var
  • 使用 javascript 调整图像大小以在画布 createPattern 中使用

    我见过一些关于如何调整图像大小的技巧 在 IMG 标签内使用 但我想在里面有一个图像变量 一个 Javascript 调整它的大小 然后使用 a 中的图像 context createPattern 图像 重复 我还没有找到任何提示 关于如
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • Google 地图 InfoBubble PixelOffset(从标记上方的默认位置移动)

    我正在尝试实现一个自定义 infoBubble 它的框打开到标记的侧面 而不是顶部的默认位置 事实证明这比预期的要困难 使用普通的infoWindow 您可以使用pixelOffset 请参阅此处文档 https developers go
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • ES6 Reflect API 的好处

    我一直在努力升级一些代码以使用 ES6 语法 我有以下代码行 delete this foo 我的 linter 提出了使用建议 Reflect deleteProperty this foo 您可以找到该方法的文档here https d
  • 使用 div 或表格来包含链接列更好吗?

    我的页面底部有 3 列链接 每列都放入一个 div 中 所有三个 div 都包装在页面中央的一个大 div 中 这是更适合桌子的东西还是桌子不适合这项工作 您还可以使用 ul http www w3schools com tags tag
  • 将 Angular Web 组件 EventEmitter 监听到 javascript

    我在以下工具的帮助下创建了一个小型网络组件本文 https medium com IMM9O web components with angular d0205c9db08f使用角度元素 其中包括 Input and Output 我能够将

随机推荐

  • 悬停效果不会在图像上触发

    我将鼠标悬停在 picutre div 中的 img 上时遇到问题 HTML div img class content pic src image exemple jpg alt exemple img class content pic
  • Apple 推送服务证书不受信任

    我最近在我的 M1 mac mini 上创建了 Apple Push Service 证书 在钥匙串中 它表示证书不受信任 我已经安装了开发者关系中级证书 如中所述here https developer apple com forums
  • Ajax字符串长度限制?

    ajax 的 url 中添加的参数长度是否有限制 我在 Ruby 上使用 Thin 服务器 并以以下格式从 Web 浏览器发出 ajax 请求 io new XMLHttpRequest io open GET http localhost
  • 使用UsageStatsManager获取前台应用程序

    我正在尝试使用UsageStatsManager 来获取带有Marshmallow 的Nexus 5 上的前台应用程序 我记得它曾经有效 但由于某种原因 我现在得到包 类名称的空字符串 这是我的实现 public String getFor
  • ffmpeg - 制作干净的 WAV 文件

    我希望使用以下命令将多个文件批量转换为音频文件ffmpeg对于一个名为Star Wars Jedi Knight Dark Forces II 我遇到的问题是ffmpeg似乎正在做一些事情Jedi Knight无法播放声音文件 Jedi K
  • .htaccess 路径只能通过 ip 访问

    我想使用 htaccess 配置阻止来自我的站点的路径 这个想法是只有一组特定的 IP 可以从 URL 访问该特定路径 Note 它是一个路径 而不是页面或目录 我们正在尝试屏蔽 Web 服务 以便仅对 URL 进行后调用 我想要网址exa
  • IntelliJ 抑制 API 方法的未使用警告

    我最近从 Eclipse 切换到 IntelliJ IDEA 我真的很喜欢检查器 发现它们用警告来标记潜在的错误 对我来说非常有用 我遇到了一个我无法解决的问题 我有一些Java项目在其他项目中用作API 因此它包含未使用的方法 这些方法被
  • 如何在nodejs中使用geoNear?

    我想使用地理空间geoNear mongodb中的数据库 Mongo查询 db runCommand geoNear tmp near type Point coordinates 77 00000 12 00000 spherical t
  • ELF可执行文件的起点?

    我用 anjuta 在 lubuntu 12 10 上编译以下 C 程序 int main return 0 文件名是 foobar 然后我打开终端并写入命令 ndisasm foobar b 32 1 gt asm txt 使用32位指令
  • Tranquility服务器不会向druid发送数据

    我在用着imply 2 2 3 这是我的宁静服务器配置 dataSources spec dataSchema dataSource tutorial tranquility server parser type string parseS
  • TCL 的通用字符串引用

    我正在编写一个实用程序 恰好是在 python 中 它以 TCL 脚本的形式生成输出 给定 python 中的一些任意字符串变量 不是 unicode 我想生成一个 TCL 行 例如 set s something 这将设置 TCL 变量
  • 过滤magento订单集合

    我使用以下行从 magento 加载订单集合 Load Order Collection order collection Mage getModel sales order gt getCollection 如何过滤此集合以忽略状态为 已
  • 如何通过“manage.py shell”使用交互式解释器重新加载 Django 模型模块?

    我知道如何在常规 Python 解释器会话中重新加载常规 Python 模块 这个问题记录了如何很好地做到这一点 如何卸载 重新加载 Python 模块 https stackoverflow com questions 437589 ho
  • 如何在 WiX 4 中使用 HarvestDirectory

    我尝试在 WiX 4 Preview 1 中使用 HarvestDirectory 项目元素 但发现它非常不直观 尽管我遵循文档中的面包屑 但我似乎无法让它真正执行任何明显的操作 在 WiX 3 中 我直接使用命令行工具 并且可以通过这种方
  • 在 Kotlin 中写入等于 Int.MIN_VALUE 的十六进制整数文字

    如何编写等于的十六进制整数文字Int MIN VALUE 这是 2147483648十进制 在 Kotlin 中 AFAIK 一个 Int 是 4 个字节 有时看起来像2的补码 https en wikipedia org wiki Two
  • WSO2 EMM Android 代理配置

    我正在尝试使用WSO2 EMM service 我下载了二进制文件并将其上传到我的服务器并在其中配置了 IP 地址 然后 我开始了 是的 效果很好 这是我的地址 a href https ip 94433 emm 普通管理员管理员 但是 我
  • GCC 不再实现

    我必须将此代码片段从 varargs h 更改为 stdarg h 但我不知道具体如何 ifndef lint int ll log va alist va dcl int event result LLog lp va list ap v
  • 如何访问 Windows 8.1 商店应用程序中 SubSections 内的控件?在视觉树中搜索不起作用

    我正在开发 Win8 1 应用程序 主页使用 Hub 在每个 HubSection 中 我需要从代码访问不同的控件 HubSection 的内容不是直接定义的 而是由 DataTemplate 定义的 因此 无法通过 x Name 访问内容
  • 了解 C++ 中的 fork、exec 和 wait (Linux)

    我对在 Linux 中使用这些不同类型的系统调用非常陌生 这让我很困惑 就此而言 我只是要求朝着正确的方向推动 开始 而不是要求完成 使用fork exec and wait 我已经阅读了它们 但这仍然对我的情况没有真正帮助 我要做的是以下
  • 如何循环来自生成器的 JavaScript 迭代器?

    假设我们有以下生成器 var gen function for var i 0 i lt 10 i yield i 循环迭代器的最有效方法是什么 目前我通过手动检查是否done属性设置为true or not var item iterat