D3.js dc.js在多个值上添加过滤器

D3.js dc.js在多个值上添加过滤器,d3.js,crossfilter,dc.js,D3.js,Crossfilter,Dc.js,我正在使用dc.js 我想添加基于复选框选择的过滤器。这是我的设想 当我选择复选框的基础上,我需要过滤器 这是我的密码 var ndx = crossfilter(readData); var practiceDimension = ndx.dimension(function (d) { return d.practice_name; }); $('#treeview input[name="practice_name[

我正在使用dc.js

我想添加基于复选框选择的过滤器。这是我的设想

当我选择复选框的基础上,我需要过滤器

这是我的密码

     var ndx = crossfilter(readData);

    var practiceDimension = ndx.dimension(function (d) {
            return d.practice_name;
        }); 

    $('#treeview input[name="practice_name[]"]:checked').each(function() {
            if(searchPracticeArray.indexOf($(this).val()) == -1)
                searchPracticeArray.push($(this).val());
                // If  I added searchPracticeArray as filter parameter then it's not working 
                // searchPracticeArray value are ['LPS','Mercy']

practiceDimension = practiceDimension.filter($(this).val());
                bubbleChart.filter($(this).val());       

        });

目前我有两个复选框,但它应该是两个以上

您可以基于函数筛选维度。我建议你这样做


但是,请记住,此函数将在某个时刻对数据集中的每个记录运行,因此您只需执行一次DOM查询,然后将这些值保存到函数范围内的数组中,然后对其进行筛选。

嗨,我找到了一些类似的解决方案

这里searchPracticeArray是数组值,它根据选择存储值

if(searchPracticeArray.length > 0)
{
var practiceDimensionFilterData;
for(var d=0; d < searchPracticeArray.length; d++ )
{
    pract_name_search = searchPracticeArray[d].key;            
    practiceDimensionFilterData = readData.filter(function(d){ return(d.practice_name == pract_name_search)})            
    practiceDimension2[d] = practiceDimensionFilterData
    if(d > 0)
    {
    practiceDimension6 = practiceDimension2[0].concat(practiceDimension2[d])
    }
    else{
    practiceDimension6 = practiceDimension2[d];
    }
    bubbleChart.filter(pract_name_search);
}
ndx = crossfilter(practiceDimension6);  

}
if(searchPracticeArray.length>0)
{
var practiceDimensionFilterData;
for(var d=0;d0)
{
practiceDimension6=practiceDimension2[0]。concat(practiceDimension2[d])
}
否则{
实际尺寸6=实际尺寸2[d];
}
bubbleChart.filter(实用名称搜索);
}
ndx=交叉滤波器(实际尺寸6);
}

Hi,我找到了一些逻辑,请检查一下,让我知道这是对多个字段进行过滤的正确方法。不,这不正确,或者更确切地说,它没有使用交叉过滤。您需要使用Crossfilter的维度和过滤器API。