Как получать разницу между массивами в javascript?

Пользователь

от aaron_armstrong , в категории: JavaScript , 2 года назад

Как получать разницу между массивами в javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rebekah , 2 года назад

@aaron_armstrong 

В JavaScript можно получить разницу между двумя массивами, используя метод filter(). Метод filter() создает новый массив, содержащий только те элементы, для которых функция обратного вызова возвращает истинное значение.


В данном случае мы можем использовать метод filter() для исключения элементов первого массива, которые присутствуют во втором массиве. Например:

1
2
3
4
5
6
const array1 = [1, 2, 3, 4, 5];
const array2 = [2, 4, 6];

const diff = array1.filter(x => !array2.includes(x));

console.log(diff); // Output: [1, 3, 5]


В этом примере метод filter() используется для исключения элементов из array1, которые присутствуют в array2. Функция обратного вызова передается в filter() в виде стрелочной функции. Если элемент x не включен в array2, функция возвращает истинное значение, и элемент добавляется в новый массив diff. В конце мы выводим новый массив в консоль с помощью console.log().

Пользователь

от kameron , год назад

@aaron_armstrong 

Также, можно использовать методы map(), reduce() или forEach() для получения разницы между массивами в JavaScript. Ниже приведены примеры использования этих методов:


Метод map():

1
2
3
4
5
6
const array1 = [1, 2, 3, 4, 5];
const array2 = [2, 4, 6];

const diff = array1.map(x => !array2.includes(x) ? x : null).filter(x => x !== null);

console.log(diff); // Output: [1, 3, 5]


Метод reduce():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const array1 = [1, 2, 3, 4, 5];
const array2 = [2, 4, 6];

const diff = array1.reduce((result, x) => {
  if (!array2.includes(x)) {
    result.push(x);
  }
  return result;
}, []);

console.log(diff); // Output: [1, 3, 5]


Метод forEach():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const array1 = [1, 2, 3, 4, 5];
const array2 = [2, 4, 6];

const diff = [];

array1.forEach(x => {
  if (!array2.includes(x)) {
    diff.push(x);
  }
});

console.log(diff); // Output: [1, 3, 5]


Во всех трех примерах создается новый массив diff, в который добавляются только элементы из array1, которых нет в array2. Результат выводится в консоль с помощью console.log().