开发者问题收集

将数组转换为迭代器

2021-06-09
7992

如何将数组转换为迭代器,以便我可以同时调用 nextdone 来迭代数组的值?

我已经详尽地看到了

an array is an iterable

但它没有任何属性( const a = [1,2,3]; a.done; // 返回未定义 )。

我尝试直接访问 Symbol.iteratorconst iter = a[Symbol.iterator]; ),但它只是为数组返回 function values()

3个回答

使用 .values() 方法,它返回一个遍历数组元素的迭代器。

Marcin Wojnarski
2022-02-06

您可以使用 .entries() 方法。

const a = [1, 2, 3];

const iterator = a.entries();

console.log(iterator.next().value, iterator.next().done);
John
2021-06-09

我不确定您想用 a.done 得到什么,但当调用 next() 时, done iterable 协议 的返回对象。

您说得对, a[Symbol.iterator] 返回 value() 函数,如 MDN Web Docs Array.prototype[@@iterator]() 但如果您想使用迭代器遍历数组,这正是您所需要的。您可以看到下面的示例:

const arr = [1,2,3];
const eArr = arr[Symbol.iterator]();
console.log(eArr.next().done);
console.log(eArr.next().done);
console.log(eArr.next().done);
console.log(eArr.next().done);
Jax-p
2021-06-09