将数组转换为迭代器
2021-06-09
7992
如何将数组转换为迭代器,以便我可以同时调用
next
和
done
来迭代数组的值?
我已经详尽地看到了
an array is an iterable
但它没有任何属性(
const a = [1,2,3]; a.done; // 返回未定义
)。
我尝试直接访问
Symbol.iterator
(
const 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