Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Filter object by value [duplicate]

Let's say I have:

let object1 = [{id: 15, name: name1}, {id: 0, name: name2}, {id: 98, name: name3}];
let object2 = [{id: 2, action: action}, {id: 88, action: action}, {id: 0, action: action}];

ID numbers don't match on purpose. How could I get name values from object1 whose ID's don't appear in object2?

Edit: I've tried to

let results;
for (let i = 0; i < object1.length; i++) {
         results = object2.filter(element => { return element.id != object1[i].id } );
    }

Also tried to get it working with .map(), but with no luck.

like image 692
Ville Avatar asked Nov 19 '25 20:11

Ville


1 Answers

You could use filter() on one of the arrays and find() to filter out the objects from that array with ids that don't occur in the other array.

let oArr1 = [{id: 15, name: "name1"}, {id: 0, name: "name2"}, {id: 98, name: "name3"}];
let oArr2 = [{id: 2, action: "action"}, {id: 88, action: "action"}, {id: 0, action: "action"}];

const result = oArr1.filter(x => !oArr2.find(y => y.id === x.id));

console.log(result);
like image 142
axtck Avatar answered Nov 22 '25 08:11

axtck



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!