Search code examples
javascriptjavascript-objects

Filter object by value


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.


Solution

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