2016-09-07 2 views
0

나는 new array dimensions in Crossfilter을 사용하고 있으며 여러 배열 값을 포함하는 행만 선택하는 필터를 만드는 데 문제가 있습니다. 정말 여러 조건의 교차로 (예를 들어, d == 1 && d == 3)를 필터링하고 싶습니다 그러나크로스 필터 배열 크기의 AND 필터

var ndx = crossfilter([ 
    {arrayVals: [1, 2]}, 
    {arrayVals: [2, 3]}, 
    {arrayVals: [1, 2, 3]} 
]); 
var arrayDim = ndx.dimension(function(d) {return d.arrayVals;}, true); 
arrayDim.filter(function(d) {return d == 1 || d == 3;}).top(Infinity); 

: 그것은 사용자 정의 필터 기능을 사용하여 배열 값의 조합을 선택하는 필터를 만들기 위해 매우 간단합니다. 나는 내가 각각 &&에 원하는 각 조건을 위해 별도의 차원을 설정함으로써 이것을 수행 할 수 있다는 것을 알고 있지만, 이는 매우 낭비적인 것처럼 보입니다. 여러 차원에 의존하지 않고도이 작업을 수행 할 수있는 방법이 있습니까?

답변

1

이유가 확실하지 않은 이유는 확실하지 않습니다. 기본적으로,이 시점에서 대답은 "아니오", 내 지식을 최대한으로. 그러나 배열 유형이 아닌 하나의 차원 만 각 조건에 대해 새 차원을 만들 필요가 없습니다. 다음과 같이하십시오 :

var arrayDim2 = ndx.dimension(function(d) {return d.arrayVals;}); 
arrayDim2.filter(function(d) { return d.indexOf(1) !== -1 && d.indexOf(3) !== -1;}); 
arrayDim2.top(Infinity); 

그런 다음 필터 기능에 새로운 조건을 계속 추가하십시오.

+0

배열 크기가 dc.js와 함께 정말 잘 작동했습니다. 배열을 배열로 유지하는 것이 더 어려워집니다. 그러나 이것이 그것이 필요한 것이라면 어떻게 작동시키는 지 알아낼 것입니다. 감사! – Singularity

+1

@Singularity 둘 다 할 수 있습니다. dc.js 차트에는 배열 차원과 그룹을 사용하고 교차 필터에는 표준 차원 만 사용하십시오. –