JavaScript-массивы: пересечение, разность и объединение в ES6

Шпаргалка для работы с массивами в JavaScript ES6+.

seapp88
seapp88

Пересечение даст нам элементы, которые объединяют оба массива, в этом случае результат должен быть [1,5].

let intersection = arrA.filter(x => arrB.includes(x));
JavaScript-массивы: пересечение, разность и объединение в ES6

Разность будет выводить элементы из массива A, которых нет в массиве B. Результат будет [3,4].

let difference = arrA.filter(x => !arrB.includes(x));
JavaScript-массивы: пересечение, разность и объединение в ES6

В этом случае вы получите массив, содержащий все элементы arrA, которых нет в arrB, и наоборот, так что результат должен быть [2,3,4,6,7].

let difference = arrA.filter(x => !arrB.includes(x)).concat(arrB.filter(x => !arrA.includes(x)));
​ seapp88
​ seapp88

Объединение должно быть самым простым из них всех, в конце концов, результатом должны быть все элементы из A, все из B или оба, как это [1,2,3,4,5,6,7].

let union = [...arrA, ...arrB];

Но есть проблема в том, что мы получим дублированные элементы, так что теоретически это не объединение. Для этого мы можем использовать new Set():

let union = [...new Set([...arrA, ...arrB)];
1515
9 комментариев

Отличная шпора! Спасибо!

1
Ответить

Спасибо за обратную связь)

1
Ответить

а как в примере с пересечениями вывести только уникальные значения? допустим если в одном из массивов 2 раза цифра "5" встречается но мне нужно лишь раз ёё вывести?

1
Ответить

Нашли ответ на этот вопрос? Тоже интересует

Ответить

А ведь если в исходных массивах есть повторяющиеся элементы, то Set недобрую службу сослужит..

Ответить

Например?

Ответить

В поледнем примере есть опечатка(
Должно быть так:
let union = [...new Set([...arrA, ...arrB])]; 

Ответить