В 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 явно медленнее, чем решение с пользовательским методом.
Поэтому, когда длина массива велика, будет хорошо использовать решение пользовательского метода.