Tom*_*ger 2 javascript arrays iterator iterable
我正在从https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Iterators_and_Generators学习有关Iterable的内容,并且它清楚地表明Array是Iterable的。在chrome控制台中对其进行检查,我们可以看到它具有Symbol.iterator,并且可以for..of在其上运行。
但是数组似乎并没有遵循next()我拥有的一种方法的迭代器模式,因为您无法重置迭代器,这将严重限制数组。
但是我很难从文档中确定哪些Iterables具有完整的实现(next()),哪些没有完整的实现,或者我在这里错过了一个基本概念。
我想念什么?
我认为您所缺少的是,迭代器与可迭代的对象之间存在差异。
数组是可迭代的,但不是迭代器。您可以从数组中获得一个迭代器,这使得它可以迭代:
// 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())Run Code Online (Sandbox Code Playgroud)