Jeg føler mig særligt inspireret til at svare på dette på grund af DotA-referencen. :)
Så hvis jeg forstår problemet korrekt, skulle du ikke skulle tjekke hver kombination, men snarere gentagne gange tilføje nøgler til query
objekt baseret på indholdet af tre sessionsvariabler. Jeg tror, at følgende logisk svarer til din returnFilterQuery
funktion ovenfor.
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);
};
Bemærk, at isEmpty
kan være en sikrere kontrol end length
hvis sessionsvariablen ikke er et array.