Пересечение двух массивов означает нахождение элементов, которые существуют в обоих массивах, при этом результат не должен содержать дубликатов.
function intersection(arr1, arr2) {
const set = new Set(arr2);
return [...new Set(arr1)].filter(item => set.has(item));
}
arr2 создаётся Set, который автоматически удаляет дубликаты и позволяет быстро искать элементыarr1 также преобразуется в Set, чтобы избавиться от его дубликатов, затем разворачивается в массивfilter проверяет каждый уникальный элемент arr1 по set с помощью set.has(item)Использование Set для поиска делает решение эффективным:
set.has() выполняется за O(1)Set использование arr2.includes() внутри filter привело бы к сложности O(n²)n и m — длины двух массивовintersection([1, 2, 2, 3], [2, 3, 3, 4]);
// Возвращает: [2, 3]
Создание Set из arr2 позволяет операции set.has() выполняться за O(1) константное время, что эффективнее, чем использовать arr2.includes() в цикле.
Новый — ещё не проверен сообществом
Вы