0

I have 2 arrays and I want to filter data based on column value. I am using below code but It is not working.

const result = data.map(data1 => {
            return Object.assign({}, data1, this.data2.filter(data2 => data2.Id !== data1.Id)[0]);
        });

Data 1 :

[
  {
    "id": 2,
    "name": "data 2",
  },
  {
    "id": 3,
    "name": "data 3",
  }
]

Data 2 :

[
  {
    "id": 2,
    "name": "data 2"
  },
  {
    "id": 3,
    "name": "data 3"
  },
  {
    "id": 4,
    "name": "data 4"
  }
]

It should return below output.

[
{
    "id": 4,
    "name": "data 4"
}
]

How do I solve this ?

Jeeten Parmar
  • 5,568
  • 15
  • 62
  • 111

1 Answers1

6

What you're looking for is a difference of 2 arrays of objects, see: Difference between two array of objects in JavaScript

You can also go by pure ids like this:

let ids = data1.map(item => item.id);
let filteredData = data2.filter(item => ids.indexOf(item.id) === -1);
Community
  • 1
  • 1
Eeks33
  • 2,245
  • 1
  • 14
  • 17