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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@aubree 

Есть несколько способов получения разницы двух массивов на JavaScript. Один из них - использовать метод filter() для получения элементов, которые присутствуют только в одном из массивов, но не в обоих:

1
2
3
4
5
6
const array1 = [1, 2, 3, 4, 5];
const array2 = [2, 4, 6];
const diff1 = array1.filter(x => !array2.includes(x));
const diff2 = array2.filter(x => !array1.includes(x));
console.log(diff1); // [1, 3, 5]
console.log(diff2); // [6]


Также можно использовать методы Set и spread операторы для более элегантного решения:

1
2
3
4
5
6
7
8
const array1 = [1, 2, 3, 4, 5];
const array2 = [2, 4, 6];
const set1 = new Set(array1);
const set2 = new Set(array2);
const diff1 = [...set1].filter(x => !set2.has(x));
const diff2 = [...set2].filter(x => !set1.has(x));
console.log(diff1); // [1, 3, 5]
console.log(diff2); // [6]


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

от christine , 7 месяцев назад

@aubree 

Еще один способ получить разницу двух массивов в JavaScript - использовать методы filter() и includes() для создания нового массива, содержащего только уникальные элементы:

1
2
3
4
5
const array1 = [1, 2, 3, 4, 5];
const array2 = [2, 4, 6];
const diff = array1.filter(x => !array2.includes(x))
                 .concat(array2.filter(x => !array1.includes(x)));
console.log(diff); // [1, 3, 5, 6]


Этот подход позволяет получить разницу обоих массивов в одном массиве.