В javascript для дедупликации массива есть 2 наилучших возможных решения:

Решение №1 — использование Set

Set — это набор уникальных значений. Сначала он преобразует массив в набор, новый набор будет неявно удалять повторяющиеся элементы. Затем преобразуйте набор обратно в массив.

const noDuplicates = (arr) => [...new Set(arr)];

Решение 2 – использование пользовательского метода

const noDuplicates = (arr) => {
  const uniqueValues = [];
  const seenMap = {};
  for (const item of arr) {
    if (seenMap[item]) continue;
    seenMap[item] = true;
    uniqueValues.push(item);   
  }    
  return uniqueValues; 
};

В последнее время в Интернете некоторые утверждают, что использование Set является лучшей практикой. И некоторые другие наборы утверждений будут снижать производительность из-за того, сколько раз вы индексируете массив.

Я провел несколько эталонных тестов на обоих решениях. Давайте посмотрим на результаты.

Тест №1

Когда длина массива мала, решение с пользовательским методом немного медленнее, чем решение с Set.

Тест 2

Когда длина массива немного велика, решение с пользовательским методом немного медленнее, чем решение с Set.

Тест №3

Когда длина массива велика, решение с Set явно медленнее, чем решение с пользовательским методом.

Поэтому, когда длина массива велика, будет хорошо использовать решение пользовательского метода.