Filter array of objects by array of ids
I have an array activeIds
of ids of services and there is another array servicesList
which contains objects of services.
Example: –
activeIds = [202, 204]
serviceList = [{
"id":201,
"title":"a"
},
{
"id":202,
"title":"a"
},
{
"id":203,
"title":"c"
},
{
"id":204,
"title":"d"
},
{
"id":205,
"title":"e"
}];
I want all the services(obj) whose ids are not a part of the first array i.e., activeIds
. From the above example code I want service obj of ids 201,203,205
Final output –
expectedArray = [{
"id":201,
"title":"a"
},
{
"id":203,
"title":"c"
},
{
"id":205,
"title":"e"
}];
Here is my attempt to code. But it is not correct at all. Please help-
const activeIds = e; // [202, 204]
const obj = [];
this.serviceList.map((s: IService) => {
activeIds.map((id: number) => {
if (id !== s.id) {
obj.push(s);
}
});
});
You can simply use array.filter
with indexOf
to check the matching element in the next array.
var arr = serviceList.filter(item => activeIds.indexOf(item.id) === -1);
DEMO
let activeIds = [202, 204]
let serviceList = [{
"id":201,
"title":"a"
},
{
"id":202,
"title":"a"
},
{
"id":203,
"title":"c"
},
{
"id":204,
"title":"d"
},
{
"id":205,
"title":"e"
}];
let arr = serviceList.filter(function(item){
return activeIds.indexOf(item.id) === -1;
});
console.log(arr);
You can do this with filter
and includes
methods.
const activeIds = [202, 204]
const serviceList = [{"id":201,"title":"a"},{"id":202,"title":"a"},{"id":203,"title":"c"},{"id":204,"title":"d"},{"id":205,"title":"e"}]
const result = serviceList.filter(({id}) => !activeIds.includes(id));
console.log(result)
Use filter
& indexOf
method.indexOf
will check if the current id is present in activeIds
array
var activeIds = [202, 204]
var serviceList = [{
"id": 201,
"title": "a"
},
{
"id": 202,
"title": "a"
},
{
"id": 203,
"title": "c"
},
{
"id": 204,
"title": "d"
},
{
"id": 205,
"title": "e"
}
];
var filteredArray = serviceList.filter(function(item) {
return activeIds.indexOf(item.id) === -1
});
console.log(filteredArray)
you can combine indexOf
to check if the current id is on the active array and filter the array.
The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .