Собираете из всех селектов значения + имена свойств, по которым должна выполняться фильтрация. Там, где значения пустые - отбрасываете. При фильтрации проверяете, чтобы каждая пара (значение, имя свойства) соответствовала содержимому элемента фильтруемого массива.
Например.