Код Senior Итераторы и генераторы обновлено

Генератор обхода вложенного массива

Условие

Генератор, выдающий элементы вложенного массива по одному, в порядке обхода, без предварительного разглаживания.

Что проверяют тесты

  • плоский обход

  • глубокая вложенность

  • пустой

  • лениво: не разглаживает заранее

Как подойти

yield* делает рекурсивный генератор двухстрочным. Главное преимущество перед flat(Infinity) - ленивость: элементы достаются по одному, и если потребитель остановился после третьего, остальная структура даже не просматривается. На больших или бесконечных структурах это принципиально.

Подсказки: 2
  1. yield* передаёт управление вложенному генератору.
  2. Ленивость получается сама: рекурсия разворачивается по мере запросов.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.