@zlodiak

Как работает аналог distinct?

Тут
https://stackblitz.com/edit/angular-2ic5vr
воспроизвёл пример из книжки, который хотел бы понять как работает в деталях.

Меня интересует только одна строка в файле product.repository.ts:

.filter((c, index, array) => array.indexOf(c) == index);

На входе имеется массив из названий категорий. В нём некоторые категории повторяются по нескольку раз. На выходе имеем тот же массив, но в котором названия категорий не повторяются.

Прежде всего мне непонятно зачем происходит сравнение с index. Как работает метод filter я представляю.

Объясните, что происходит в этой строке.
  • Вопрос задан
  • 246 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Прежде всего мне непонятно зачем происходит сравнение с index.

Затем, что это сравнение для конкретного значения выдаст true ровно один раз - так как indexOf возвращает первый индекс, по которому можно найти элемент, равный указанному. То есть, если indexOf текущего элемента равен текущему индексу, значит элемент встречен впервые, и его надо оставить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@forspamonly2
не знаю что там у вас за книжка, которая предлагает примеры алгоритмов с квадратичной сложностью, но для реальных проектов так лучше не писать. делайте как-нибудь через сеты:

Array.from(new Set(sourceArray]))
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы