javascript - 是否所有 JavaScript Iterables 都有 next() 方法?
问题描述
我正在从https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators学习 Iterables ,它清楚地指出 Array 是 Iterable。在 chrome 控制台中检查它,我们可以看到它有Symbol.iterator
,我们可以for..of
在上面运行。
但是数组似乎没有遵循迭代器模式,即拥有一个next()
方法,我有点明白,因为你不能重置迭代器,这将严重限制数组。
但是我无法从文档中确定哪些 Iterables 具有完整的实现(next()),哪些没有,或者我在这里缺少一个基本概念。
我错过了什么?
解决方案
我认为您缺少的是iterator和iterable之间的区别。
数组是可迭代的,但不是迭代器。您可以从数组中获取迭代器,这就是使其可迭代的原因:
// iterable
let arr = [1, 2, 3, 4]
// Symbol.iterator function returns the iterator
let it = arr[Symbol.iterator]()
// iterators have next()
console.log(it.next())
console.log(it.next())
console.log(it.next())
console.log(it.next())
console.log(it.next())
推荐阅读
- javascript - JSON.parse 覆盖以处理传入对象
- java - MyBatis - 禁用缓存
- powershell - 在导出 csv 中使用动态路径时,不支持给定路径的格式
- xml - XamlReader.Load() 函数的奇怪行为
- javascript - 多对象交集和移除问题[处理/p5.js]
- c++ - 有没有办法在文本文件中查找特定单词并使用 fstream 知道它的 seekg() 位置?
- php - phpmaker中的浮动标签
- javascript - 如何将我网站上生成的文件保存和打开到用户的本地文件系统?
- python - 使用 lambda(zappa)/django-storages 在 wagtail admin 中尝试上传时出现“不支持的图像格式”错误,并带有有效的 png/jpg
- java - 从 jsp 文件发送 Get 请求并获取 json 响应