Иногда необходимо сравнить два массива и вывести элементы, которые присутствуют только в одном из них. Например, есть два массива:
let array1 = ['яблоко', 'банан', 'апельсин']; let array2 = ['банан', 'апельсин', 'киви', 'манго'];
Цель — получить массив, который будет содержать элементы ['яблоко', 'киви', 'манго']
, так как именно эти элементы уникальны для каждого из массивов.
Вычисление разницы между массивами
В JavaScript нет встроенного метода для нахождения разницы между массивами, но это можно сделать, используя комбинацию нескольких методов.
Использование метода filter
Метод filter
создает новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции.
let array1 = ['яблоко', 'банан', 'апельсин']; let array2 = ['банан', 'апельсин', 'киви', 'манго']; let difference = array1 .filter(x => !array2.includes(x)) .concat(array2.filter(x => !array1.includes(x))); console.log(difference); // ["яблоко", "киви", "манго"]
В этом коде используется метод filter
для создания нового массива из элементов, которые не включены в другой массив. Затем эти новые массивы объединяются с помощью метода concat
.
Использование Set и метода filter
Если исходные массивы содержат большое количество элементов и требуется более производительное решение, можно использовать объект Set вместе с методом filter
.
let array1 = ['яблоко', 'банан', 'апельсин']; let array2 = ['банан', 'апельсин', 'киви', 'манго']; let set = new Set(array2); let difference = array1.filter(x => !set.has(x)); console.log(difference); // ["яблоко"]
Здесь создается Set из второго массива, что позволяет быстро проверять наличие элементов. Затем используется метод filter
для создания нового массива из элементов первого массива, которые отсутствуют в Set.
Обратите внимание, что этот код найдет только элементы, которые присутствуют в первом массиве, но отсутствуют во втором. Чтобы найти уникальные элементы в обоих массивах, нужно выполнить операцию в обе стороны и объединить результаты.
Добавить комментарий