В чем практическая польза итераторов в JS?

До итераторов как то руки не доходили. И вот вчера решил разобраться с ними. Идею понял. Как реализовывать понял. Но вот в чем их практическая польза Symbol.iterator?
У объектов и массивов есть уже готовые методы. У новых структур Map и Set уже есть итераторы. В чем собственно говоря их практическая польза? В гибкости?

С их помощью можно конечно добавить итератор объекту, или своему собственному хэшу, но есть же Map, Set.
Короче, штука неплохая. но есть вопросы по целесообразности ее использования. Может кто пояснить на примере?
  • Вопрос задан
  • 1288 просмотров
Решения вопроса 1
search
@search
Мама говорит что я особенный
Полезность итераторов в том что это открытый интерфейс для любой структуры данных. Как вы уже поняли, любой класс/объект в JS может обладать интерфейсом итератора. Идея итератора в том чтобы скрыть внутреннее представление структуры данных от потребителя этих данных. Например, если вы работаете с какими-либо замысловатыми структурами данных, типа бинарных деревьев. Пользователю совсем не обязательно знать как ваш класс/объект хранит бинарное дерево. Пользователь просто его получает и проходит по всем его элементам в цикле. В дальнейшем, вы можете, при необходимости, заменить одну структуру данных на другую, не меняя самого пользователя. Например, вы можете заменить бинарное дерево на б-дерево прозрачно для самого пользователя (пользователь не будет знать что вы подменили структуры, он по прежнему получает что-то что можно проитерировать и ему этого достаточно).

Для того чтоб глубже понять суть вопроса, можно погуглить про инкапсуляцию и SOLID (в вашем случае, принцип Open/closed).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lega
> но есть же Map, Set.

Это совсем не про это, итераторы позволяют частично выполнять ф-ии, множественный вход-выход, потоковая передача данных и т.д.

Для сравнения попробуйте сделать функцию вычисления бесконечного фибоначи на итераторах и без, и сравните время выполнения, для получения результата (хотя бы первых N элементов).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
от 30 000 до 65 000 руб.
MedPoint24 Москва
от 100 000 руб.
TZ Communications Москва
от 140 000 до 200 000 руб.
21 окт. 2018, в 12:15
100000 руб./за проект
21 окт. 2018, в 09:51
12000 руб./за проект
21 окт. 2018, в 02:06
500 руб./в час