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

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

    Для того чтоб глубже понять суть вопроса, можно погуглить про инкапсуляцию и SOLID (в вашем случае, принцип Open/closed).
    Ответ написан
  • Сравнение каждый с каждым?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Понадобится два пальца.

    Один указывает сначала на самый левый элемент. Другой перебирает со следующего и дальше направо:
    ooooooooooo
    ||-->


    Затем левый сдвигаем на один вправо, и всё повторяется: справа от него второй и дальше направо идёт:
    ooooooooooo
     ||-->

    На каждом шаге сравниваем элементы массива, на которые указываем.
    Ответ написан