Почему выбрал объект для хранения подписчиков? Как работает отписка через filter? Какая сложность алгоритма у filter?
Answer from AI
sobes.tech AI
Объект выбран для хранения подписчиков, потому что он обеспечивает быстрый доступ к подписчикам по ключу (например, ID или имени события). Это позволяет эффективно добавлять, удалять и искать подписчиков без необходимости обходить весь список.
Отписка через метод filter работает так: у вас есть массив подписчиков, и вы создаёте новый массив, в который попадают только те подписчики, которые не равны тому, от которого хотите отписаться. Таким образом, подписчик удаляется из массива.
Пример:
let subscribers = [fn1, fn2, fn3];
// Отписка fn2
subscribers = subscribers.filter(fn => fn !== fn2);
Сложность алгоритма filter — O(n), где n — количество элементов в массиве, так как метод проходит по всем элементам, проверяя условие.
Таким образом, отписка через filter — это операция линейной сложности, что может быть неэффективно при большом количестве подписчиков.