Filter object by value

Viewed 138

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.

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);

Related