Me siento particularmente inspirado para responder esto debido a la referencia de DotA. :)
Entonces, si entiendo el problema correctamente, no debería necesitar verificar cada combinación, sino agregar claves repetidamente a la query
objeto basado en el contenido de tres variables de sesión. Creo que lo siguiente es lógicamente equivalente a su returnFilterQuery
función anterior.
var returnFilterQuery = function() {
var query = {game: 'dota'};
var modifyQueryIfArray = function(key, sessionKey) {
var value = Session.get(sessionKey);
if (!_.isEmpty(value))
query[key] = {$in: value};
};
modifyQueryIfArray('gamemode', 'dotaMode');
modifyQueryIfArray('region', 'dotaRegion');
modifyQueryIfArray('skill', 'dotaSkill');
return Session.set('dotaFilter', query);
};
Tenga en cuenta que isEmpty
puede ser una comprobación más segura que length
en caso de que la variable de sesión no sea una matriz.