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));