To get the difference between two arrays of objects in JavaScript, we use the filter
and some
methods.
For instance, we write
const arrayOne = [
{ value: "4a55eff3-1e0d-4a81-9105-3ddd7521d642", display: "Jamsheer" },
{ value: "644838b3-604d-4899-8b78-09e4799f586f", display: "Muhammed" },
{ value: "b6ee537a-375c-45bd-b9d4-4dd84a75041d", display: "Ravi" },
{ value: "e97339e1-939d-47ab-974c-1b68c9cfb536", display: "Ajmal" },
{ value: "a63a6f77-c637-454e-abf2-dfb9b543af6c", display: "Ryan" },
];
const arrayTwo = [
{ value: "4a55eff3-1e0d-4a81-9105-3ddd7521d642", display: "Jamsheer" },
{ value: "644838b3-604d-4899-8b78-09e4799f586f", display: "Muhammed" },
{ value: "b6ee537a-375c-45bd-b9d4-4dd84a75041d", display: "Ravi" },
{ value: "e97339e1-939d-47ab-974c-1b68c9cfb536", display: "Ajmal" },
];
const results = arrayOne.filter(
({ value: id1 }) => !arrayTwo.some(({ value: id2 }) => id2 === id1)
);
console.log(results);
to call arrayOne.filter
with a callback that calls arrayTwo.some
to cheeck if there’s any object with id2
, which is the _value
property of the item in arrayTwo
equal to id1
, which is the _value
property of the object being looped through in arrayOne
.
Then an array with the items in arrayOne
without the _value
property equal to any entry in arrayTwo
object’s _value
property is returned.