Как найти общие элементы двух массивов
Короткий ответ
Оставьте элементы первого массива, которые есть и во втором:
const a = [1, 2, 3, 4];
const b = [3, 4, 5];
console.log(a.filter((item) => b.includes(item)).join(', '));Результат:
3, 4Большие массивы
includes() каждый раз просматривает весь массив. С Set каждая проверка мгновенная:
const a = ['tea', 'milk', 'bread'];
const b = new Set(['bread', 'tea', 'eggs']);
console.log(a.filter((item) => b.has(item)).join(', '));Результат:
tea, breadМетоды Set
В современных средах у множеств есть intersection() и union():
const a = new Set([1, 2, 3]);
const b = new Set([2, 3, 4]);
console.log([...a.intersection(b)].join(', '));
console.log([...a.union(b)].join(', '));Результат:
2, 3
1, 2, 3, 4Частая ошибка
Если в первом массиве есть повторы, они попадут и в результат. Уберите дубликаты через Set:
const a = [1, 1, 2];
const b = [1, 2];
console.log(a.filter((item) => b.includes(item)).join(', '));
console.log([...new Set(a.filter((item) => b.includes(item)))].join(', '));Результат:
1, 1, 2
1, 2Функции из этого ответа
- Array.prototype.filter — Создаёт новый массив из элементов, прошедших проверку.
- Array.prototype.includes — Проверяет, есть ли значение в массиве.
- Set — Коллекция уникальных значений.