Filter array of objects based on another array in javascript
The simplest way to filter is to use the array's filter()
function, similar to this:
people.filter(person => id_filter.includes(person.id))
You can use array.filter()
with few conditions to get the output you want. Also i have corrected your JSON.
var filtered = people.filter(function(item) { return id_filter.indexOf(item.id) !== -1 && item.gender==='m';});
DEMO
var people =[ { "id": 1, "name": "abc", "gender": "m","age": "15" }, { "id": 2, "name": "a", "gender": "m", "age": "25" }, { "id": 3,"name": "efg", "gender": "f","age": "5" }, { "id": 4,"name": "hjk","gender": "m","age": "35" }, { "id": 5, "name": "ikly","gender": "m","age": "41" }, { "id": 6, "name": "ert", "gender": "f", "age": "30" }, { "id": 7, "name": "qwe", "gender": "f", "age": "31" }, { "id":8, "name": "bdd", "gender": "m", "age": " 8" }];var id_filter = [1,4,5,8];var filtered = people.filter(function(item) { return id_filter.indexOf(item.id) !== -1 && item.gender==='m';});console.log(filtered);
With Array.includes()
function:
var people = [ {id : "1", name : "abc", gender : "m", age :"15" }, {id : "2", name : "a", gender : "m", age :"25" }, {id : "3", name : "efg", gender : "f", age :"5" }, {id : "4", name : "hjk", gender : "m", age :"35" }, {id : "5", name : "ikly", gender : "m", age :"41" }, {id : "6", name : "ert", gender : "f", age :" 30" }, {id : "7", name : "qwe", gender : "f", age :" 31" }, {id : "8", name : "bdd", gender : "m", age :" 78" }], id_filter = [1,4,5,8], result = people.filter((o) => id_filter.includes(+o.id) && o.gender == "m"); console.log(result);
+o.id
-+
is used here to cast a numeric string into number