简介
在本实验中,我们将探索 JavaScript 中的迭代器和生成器概念。具体来说,我们将专注于创建一个扁平迭代器,它可以遍历嵌套数组和集合,并将它们展平为单个可迭代对象。这将使我们能够以更简化的方式高效地访问和操作嵌套数据结构。在实验结束时,你将对生成器和迭代器的工作原理以及它们如何应用于解决实际问题有更深入的理解。
扁平迭代器解释
要创建一个遍历可迭代对象并展平嵌套可迭代对象的生成器,请按以下步骤操作:
- 打开终端/SSH 并输入
node开始练习编码。 - 在生成器函数中使用递归。
- 使用
for...of循环遍历给定可迭代对象的值。 - 使用
Symbol.iterator检查每个值是否为可迭代对象。 - 如果是,则使用
yield*表达式递归委托给同一个生成器函数。 - 否则,
yield当前值。
以下是一个示例代码片段:
const flatIterator = function* (itr) {
for (let item of itr) {
if (item[Symbol.iterator]) yield* flatIterator(item);
else yield item;
}
};
const arr = [1, 2, [3, 4], [5, [6, [7], 8]], 9, new Set([10, 11])];
[...flatIterator(arr)]; // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
在示例中,arr 是一个值数组,包括嵌套数组和一个集合。flatIterator 生成器函数用于展平这些嵌套值并返回一个展平后的数组。
总结
恭喜你!你已经完成了扁平迭代器实验。你可以在 LabEx 中练习更多实验来提升你的技能。