Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compare two javascript arrays and remove duplicate entries

I am trying to compare two different arrays together, One previous and one current. The previous set of data contains:

[
  {"member_name":"Test1","item":"Sword"},
  {"member_name":"Test2","item":"Sword"}
]

The new set contains:

[
  {"member_name":"Test1","item":"Sword"},
  {"member_name":"Test2","item":"Sword"},
  {"member_name":"Test1","item":"Shield"}
]

So as you can see here Test1 has obtained a new item. I've tried to compare these two arrays together a few ways but with no avail.

The methods I've tried:

This one just returns the entire array. Not individual items.

Items_Curr.filter(function(item) { return !Items_Prev.includes(item); });

This method just returns 3 Undefined's.

Items_Curr.map(e => { e.member_name });

I've been looking through trying to find a way of doing this but other posts just explain methods to determine change in simpler arrays.

E.G [a,b] - [a, b, c]

Update:

The end goal is I'd like to create a new array 'NewItems' which would contain an array of all the newly added names and items. So if there is change, I would like that to be broadcasted, if there is no change, then ignore until the function has been ran again.

like image 641
T3rr11 Avatar asked Jul 28 '26 00:07

T3rr11


1 Answers

Realistically you want to do something like:

[a, b, c] - [a, b] 

Which would give you c. You can achieve this using .some, which allows you to "customize" the includes functionality.

See example below:

const arr1 = [
  {"member_name":"Test1","item":"Sword"},
  {"member_name":"Test2","item":"Sword"}
];

const arr2 = [
  {"member_name":"Test1","item":"Sword"},
  {"member_name":"Test2","item":"Sword"},
  {"member_name":"Test1","item":"Shield"}
];

const res = arr2.filter(({member_name:a, item:x}) => !arr1.some(({member_name:b, item:y}) => a === b && x === y));
console.log(res);
like image 198
Nick Parsons Avatar answered Jul 30 '26 13:07

Nick Parsons



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!