मैं DotA संदर्भ के कारण इसका उत्तर देने के लिए विशेष रूप से प्रेरित महसूस कर रहा हूं। :)पी>
इसलिए यदि मैं समस्या को सही ढंग से समझता हूं, तो आपको प्रत्येक संयोजन की जांच करने की आवश्यकता नहीं है, बल्कि बार-बार query में कुंजी जोड़ने की आवश्यकता है। तीन सत्र चर की सामग्री के आधार पर वस्तु। मुझे लगता है कि निम्नलिखित तार्किक रूप से आपके returnFilterQuery के बराबर है ऊपर कार्य करें।
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);
};
ध्यान दें कि isEmpty length . से अधिक सुरक्षित जांच हो सकती है यदि सत्र चर एक सरणी नहीं है।