Сравнение 2-х массивов с объектами и вывод лишнего/лишних элементов
Всем привет! У меня есть 2 массива с объектами.
[
{
"connectionId": 233,
"validationId": 1,
"validationType": 2
},
{
"connectionId": 235,
"validationId": 2,
"validationType": 1
},
{
"connectionId": 239,
"validationId": 3,
"validationType": 2
}
];
и
[
{
"validationId": 1,
"validationType": 2
},
{
"validationId": 3,
"validationType": 2
}
];
Мне нужно получить лишний элемент, который не соответствует 2-ому массиву, в данном случае:
{
"connectionId": 235,
"validationId": 2,
"validationType": 1
}
Лишних элементов может быть несколько. Нужно не колличество элементов, а сам элемент/элементы
[update]
firstArr = [
{
"connectionId": 233,
"validationId": 1,
"validationType": 2
},
{
"connectionId": 235,
"validationId": 5,
"validationType": 2
},
{
"connectionId": 239,
"validationId": 3,
"validationType": 2
},
{
"connectionId": 253,
"validationId": 1,
"validationType": 1
},
{
"connectionId": 255,
"validationId": 3,
"validationType": 1
},
{
"connectionId": 257,
"validationId": 5,
"validationType": 1
},
{
"connectionId": 260,
"validationId": 4,
"validationType": 1
}
]
let secondArray = [
{
"validationId": 5,
"validationType": 1
},
{
"validationId": 1,
"validationType": 2
},
{
"validationId": 5,
"validationType": 2
},
{
"validationId": 3,
"validationType": 2
}
]
validationType - может быть у каждого элемента разными. И количество возвращаемого значения может быть как одно так и несколько.
Ответы (1 шт):
Автор решения: Sergey Glazirin
→ Ссылка
const first = [{
connectionId: 233,
validationId: 1,
validationType: 2,
},
{
connectionId: 235,
validationId: 2,
validationType: 1,
},
{
connectionId: 239,
validationId: 3,
validationType: 2,
},
];
const second = [{
validationId: 1,
validationType: 2,
},
{
validationId: 3,
validationType: 2,
},
];
const firstArr = [{
connectionId: 233,
validationId: 1,
validationType: 2,
},
{
connectionId: 235,
validationId: 5,
validationType: 2,
},
{
connectionId: 239,
validationId: 3,
validationType: 2,
},
{
connectionId: 253,
validationId: 1,
validationType: 1,
},
{
connectionId: 255,
validationId: 3,
validationType: 1,
},
{
connectionId: 257,
validationId: 5,
validationType: 1,
},
{
connectionId: 260,
validationId: 4,
validationType: 1,
},
];
let secondArray = [{
validationId: 5,
validationType: 1,
},
{
validationId: 1,
validationType: 2,
},
{
validationId: 5,
validationType: 2,
},
{
validationId: 3,
validationType: 2,
},
];
const getDiff = (arr1, arr2) => {
return arr1.reduce((acc, item) => {
const diff = arr2.find(
(el) =>
el.validationId === item.validationId &&
el.validationType === item.validationType
);
return diff ? acc : [...acc, item];
}, []);
};
console.log(getDiff(first, second));
console.log(getDiff(firstArr, secondArray));