JSFiddle - React, Tailwind, and code Playground
JavaScript
function search(searchObj, data) {
if(searchObj instanceof Array) {
return data.reduce(function(prev, current, index, array) {
return prev.concat(search(current, data));
}, []);
} else {
var results = data.filter(function(el) {
for(var prop in searchObj) {
if(searchObj[prop] instanceof Array) {
if(searchObj[prop].indexOf(el[prop]) == -1) {
return false;
}
} else
if(el[prop] !== searchObj[prop]) {
return false;
}
}
return true;
});
return results;
}
};
var userdata = [
{"id":1,"gender":"M","first":"John","last":"Smith","city":"Seattle, WA","status":"Active"},
{"id":2,"gender":"F","first":"Kelly","last":"Ruth","city":"Dallas, TX","status":"Active"},
{"id":3,"gender":"M","first":"Jeff","last":"Stevenson","city":"Washington, D.C.","status":"Active"},
{"id":4,"gender":"F","first":"Jennifer","last":"Gill","city":"Seattle, WA","status":"Inactive"}
],
search_object = {gender:"M",city:"Seattle, WA"},
search_object1 = {gender:"M"},
search_object2 = {city:"Seattle, WA"},
search_array = {status:["Active","Inactive"]},
search_array2 = [{status:"Active"},{status:"Inactive"}],
search_array3 = [{status:["Active","Inactive"]}];
console.log(search(search_object, userdata));
console.log(search(search_object1, userdata));
console.log(search(search_object2, userdata));
console.log(search(search_array, userdata));
console.log(search(search_array2, userdata));
console.log(search(search_array3, userdata));