Перейти к содержимому

Итерируемые объекты и итераторы в JavaScript

Введение в итерируемые объекты JavaScript

Итерируемые объекты JavaScript — это объекты, реализующие определенный протокол, что позволяет использовать их в конструкциях итерации, таких как for...of. В этом руководстве рассматриваются основные концепции, встроенные итерируемые объекты и практические приемы работы с коллекциями.

Что такое итерируемые объекты в JavaScript?

В основе итерируемого объекта лежит реализация метода Symbol.iterator, что обеспечивает последовательный доступ к его элементам. Несколько встроенных типов в JavaScript являются итерируемыми, включая Array, String, Map, Set и другие. Важно различать итерируемый объект (объект, по которому происходит обход) и итератор (объект, возвращаемый методом Symbol.iterator, который непосредственно выполняет обход). Эти итерируемые объекты являются неотъемлемой частью различных операций, таких как циклы и манипуляции с данными.

INFO

Для подробного изучения объектов JavaScript Map и Set обратитесь к нашему подробному руководству JavaScript Map и Set.

Пример итерируемого объекта: Array

Рассмотрим базовый пример итерируемого объекта в JavaScript:


Output appears here after Run.

Этот фрагмент кода демонстрирует итерацию по массиву фруктов, который является распространенным итерируемым объектом. Цикл for...of автоматически вызывает метод Symbol.iterator итерируемого объекта и потребляет возвращенный итератор до тех пор, пока done не станет true.

Метод Symbol.iterator

Фундаментом итерируемого объекта является его метод Symbol.iterator. Этот специальный метод возвращает итератор, который предоставляет механизм для обхода элементов итерируемого объекта.

Пример: Пользовательский итерируемый объект


Output appears here after Run.

В этом примере мы создали пользовательский итерируемый объект с собственным методом Symbol.iterator. Примечание: сокращенный синтаксис объявления метода гарантирует, что this правильно ссылается на объект myIterable. (Использование стрелочной функции здесь захватило бы this лексически и нарушило бы паттерн.)

Продвинутые техники итерации

По мере продвижения в изучении JavaScript вы будете сталкиваться с ситуациями, требующими более сложных техник итерации.

Использование Array.from()

Метод Array.from() — это мощный инструмент, который создает новый массив на основе итерируемого объекта.

Пример: Преобразование Set в Array


Output appears here after Run.

Синтаксис spread с итерируемыми объектами

Синтаксис spread (...) позволяет развернуть итерируемые объекты там, где ожидаются аргументы или элементы.

Пример: Объединение массивов


Output appears here after Run.

Заключение

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

Практика

Какие из следующих утверждений об итерируемых объектах JavaScript являются верными?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.