首页 > 解决方案 > 是否所有 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()),哪些没有,或者我在这里缺少一个基本概念。

我错过了什么?

标签: javascriptarraysiteratoriterable

解决方案


我认为您缺少的是iteratoriterable之间的区别。

数组是可迭代的,但不是迭代器。您可以从数组中获取迭代器,这就是使其可迭代的原因:

// 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())


推荐阅读