Compare the elements of two arrays by Id and remove the elements from the one array that are not presented in the other

javascript, jquery

Solution

You can use a function that accepts any number of arrays, and returns only the items that are present in all of them.

function compare() {
    let arr = [...arguments];
    return arr.shift().filter( y => 
        arr.every( x => x.some( j => j.Id === y.Id) )
    )
}
var arr1 = [{Id: 1, Name: "Test1"}, {Id: 2, Name: "Test2"}, {Id: 3, Name: "Test3"}, {Id: 4, Name: "Test4"}];
var arr2 = [{Id: 1, Name: "Test1"}, {Id: 3, Name: "Test3"}, {Id: 30, Name: "Test3"}];
var arr3 = [{Id: 1, Name: "Test1"}, {Id: 6, Name: "Test3"}, {Id: 30, Name: "Test3"}];

var new_arr = compare(arr1, arr2, arr3);
console.log(new_arr);

function compare() {
 let arr = [...arguments]
 
 return arr.shift().filter( y => 
   arr.every( x => x.some( j => j.Id === y.Id) )
  )
}

Problem

I have two arrays of objects like this: ``` var arr1 = [{Id: 1, Name: "Test1"}, {Id: 2, Name: "Test2"}, {Id: 3, Name: "Test3"}, {Id: 4, Name: "Test4"}] var arr2 = [{Id: 1, Name: "Test1"}, {Id: 3, Name: "Test3"}] ``` I need to compare the elements of the two arrays by `Id` and remove the elements from `arr1` that are not presented in `arr2` ( does not have element with that `Id`). How can I do this ?

Original source

Related problems