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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от lilla.herman , 2 года назад

@otha_marks 

В JavaScript есть несколько способов получить разницу между двумя массивами. Рассмотрим два массива arr1 и arr2.

  1. С использованием метода filter() и includes():
1
2
3
4
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = arr1.filter(item => !arr2.includes(item));
console.log(diff); // [1, 2]


  1. С использованием метода filter() и метода indexOf():
1
2
3
4
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = arr1.filter(item => arr2.indexOf(item) === -1);
console.log(diff); // [1, 2]


  1. С использованием метода reduce() и includes():
1
2
3
4
5
6
7
8
9
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = arr1.reduce((result, item) => {
  if (!arr2.includes(item)) {
    result.push(item);
  }
  return result;
}, []);
console.log(diff); // [1, 2]


  1. С использованием оператора spread и метода filter():
1
2
3
4
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = [...arr1].filter(item => !arr2.includes(item));
console.log(diff); // [1, 2]


Во всех примерах получен массив diff, который содержит элементы, которые есть в arr1, но отсутствуют в arr2.

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

от landen.nienow , год назад

@otha_marks 

ПРимеры, предоставленные пользователем, являются вполне рабочими и эффективными для нахождения разницы между двумя массивами в JavaScript. Однако, существуют и другие способы достижения этой цели. Вот некоторые из них:

  1. С использованием метода Array.filter() и метода Array.includes():
1
2
3
4
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = arr1.filter(item => !arr2.includes(item));
console.log(diff); // [1, 2]


  1. С использованием метода Array.filter() и метода Array.indexOf():
1
2
3
4
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = arr1.filter(item => arr2.indexOf(item) === -1);
console.log(diff); // [1, 2]


  1. С использованием оператора spread и метода Array.filter():
1
2
3
4
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = [...arr1].filter(item => !arr2.includes(item));
console.log(diff); // [1, 2]


  1. С использованием метода Array.reduce() и метода Array.includes():
1
2
3
4
5
6
7
8
9
const arr1 = [1, 2, 3, 4, 5];
const arr2 = [3, 4, 5, 6, 7];
const diff = arr1.reduce((result, item) => {
  if (!arr2.includes(item)) {
    result.push(item);
  }
  return result;
}, []);
console.log(diff); // [1, 2]


Во всех примерах указан массив diff, который содержит элементы, которые есть в arr1, но отсутствуют в arr2. Используйте любой из этих способов в зависимости от вашего предпочтения и ситуации.