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); } }); });
One can use filter() function in JavaScript to filter the object array based on attributes. The filter() function will return a new array containing all the array elements that pass the given condition. If no elements pass the condition it returns an empty array.
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With