Search code examples
javascriptlodash

Remove an array element if one of the property contains certain values


I have following variable:

var data = [{id: '1', name: 'demo1'}, {id: '2', name: 'demo2'}, {id: '3', name: 'demo3'}]

Now I have another list of ids,

var lookFor = ["2", "3"];

Now, from data how will I remove the objects with id not available in the lookFor array of ids.

I tried with following

_.filter(data, function(item) {
  return _.contains(lookFor, 'id');
});

Is there any other way?


Solution

  • Uhm consider the following?

    var data = [{id: '1', name: 'demo1'}, {id: '2', name: 'demo2'}, {id: '3', name: 'demo3'}];
    var keys = ["2", "3"];
    
    let filteredArray = data.filter(element => keys.indexOf(element.id) != -1);
    console.log(filteredArray);
    
    // Output is now 
    // 0: {id: "2", name: "demo2"}
    // 1: {id: "3", name: "demo3"}
    

    Use this the get the opposite:

    let filteredArray = data.filter(element => keys.indexOf(element.id) == -1);
    console.log(filteredArray);
    
    // Output is:
    // 0: {id: "1", name: "demo1"}
    

    Is that what you want?

    Have a nice day, Elias