Сравнение 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));

→ Ссылка