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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@jedidiah.brown 

Существует несколько способов получить разницу между массивами в javascript:

  1. Использование метода filter()
1
2
3
4
5
6
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4, 5, 6, 7];

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

console.log(diffArray);  // [1, 2]


  1. Использование метода reduce()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4, 5, 6, 7];

const diffArray = array1.reduce((acc, value) => {
  if (!array2.includes(value)) {
    acc.push(value);
  }
  return acc;
}, []);

console.log(diffArray);  // [1, 2]


  1. Использование оператора spread и метода filter()
1
2
3
4
5
6
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4, 5, 6, 7];

const diffArray = [...array1].filter(x => !array2.includes(x));

console.log(diffArray);  // [1, 2]


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

от hanna_jacobson , 8 месяцев назад

@jedidiah.brown 

Дополнительный способ - использование метода Array.prototype.filter() и Array.prototype.filter():

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

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

console.log(diffArray1);  // [1, 2]
console.log(diffArray2);  // [6, 7]


Также можно использовать цикл for для сравнения и получения разницы:

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

const diffArray = [];

for (let i = 0; i < array1.length; i++) {
  if (!array2.includes(array1[i])) {
    diffArray.push(array1[i]);
  }
}

console.log(diffArray);  // [1, 2]


Какой метод выбрать, зависит от ваших предпочтений и контекста использования.