Раскрытие вложенных структур данных с использованием итераторов JavaScript

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии мы будем изучать концепцию итераторов и генераторов в JavaScript. В частности, мы сосредоточимся на создании плоского итератора, который может проходить по вложенным массивам и множествам и сглаживать их в единый итерируемый объект. Это позволит нам эффективно получать доступ к и манипулировать вложенными структурами данных более упорядоченным способом. В конце практического занятия вы будете иметь более глубокое понимание того, как работают генераторы и итераторы, и как они могут быть применены для решения реальных задач.

Объяснение плоского итератора

Чтобы создать генератор, который будет итерироваться по итерируемому объекту и сглаживать вложенные итерируемые объекты, следуйте этим шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Используйте рекурсию в функции-генераторе.
  3. Используйте цикл for...of для итерирования по значениям заданного итерируемого объекта.
  4. Используйте Symbol.iterator, чтобы проверить, является ли каждое значение итерируемым объектом.
  5. Если да, используйте выражение yield*, чтобы рекурсивно делегировать вызов тому же генератору.
  6. В противном случае 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, чтобы улучшить свои навыки.