Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как найти общие элементы двух массивов

Короткий ответ

Оставьте элементы первого массива, которые есть и во втором:

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 — Коллекция уникальных значений.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.