我想知道实现以下目标的最干净方法是什么
我有很多这样的下拉列表,我正在使用它们来过滤数组。
<select class="fselect">
<option value="All A types">All A types</option>
<option value="A1">A1</option>
<option value="A2">A2</option>
</select>
<select class="fselect">
<option value="All B types">All B types</option>
<option value="B1">B1</option>
<option value="B2">B2</option>
</select>
<select class="fselect">
<option value="All C types">All C types</option>
<option value="C1">C1</option>
<option value="C2">C2</option>
</select>
<select class="fselect">
<option value="All D types">All D types</option>
<option value="D1">D1</option>
<option value="D2">D2</option>
</select>
过滤器为AND OR。这样用户可以只搜索A1或D2,或者他们可以搜索A2和B1或所有C类型和D2或A2,B2,C1和D2等。因此,可能的组合数目越来越多。
我希望可以通过写一个非常复杂的if或switch语句来做到这一点,因为有可能多达8个不同的下拉菜单。我正在使用jQuery和D3 v3库。
感谢您的帮助。
答案 0 :(得分:0)
不确定要检查的实际标准是什么(例如,包含这些值的字符串,数组包含具有c:1
之类的值的对象,数组包含字符串['C1','A1','A2']
的数组等)。
一种排除过滤条件的可能方法。
var filters = []
//Monitor all dropdowns for a change
$('.fselect').change(funciton(e){
//On change, check all of them for current state
$('.fselect').each(function(){ // not sure if we can use $(this) ?
$(this).val() && filters.push($(this).val()) // If you include an 'empty' value for a non-used filter then don't add to array
})
// filters = ['A1','All C types']
})