我想使用交叉過濾器ans d3進行多級別的數組過濾。使用交叉過濾器組的多維陣列
App.js如下所示。
var region = [{
"code" : "New-York",
"id" : 1,
"centre" : [{
"name": "xxx",
"id" : 11
},{
"name": "yyy",
"id" : 12,
},{
"name": "zzz",
"id" : 13,
}]
},{
"code" : "Florida",
"id" : 2,
"centre" : [{
"name": "aaa",
"id" : 21
},{
"name": "bbb",
"id" : 23,
}]
},{
"code" : "Tennessee",
"id" : 3,
"centre" : [{
"name": "ccc",
"id" : 31
}, {
"name": "ddd",
"id" : 32,
}, {
"name": "eee",
"id" : 33,
}, {
"name": "fff",
"id" : 34,
}]
},{
"code" : "Jersey",
"id" : 3,
"centre" : [{
"name": "ccc",
"id" : 31
}, {
"name": "ddd",
"id" : 32,
}, {
"name": "eee",
"id" : 33,
}, {
"name": "fff",
"id" : 34,
}]
}
];
$(document).ready(function() {
var i, allCodeDimensionGroups, currentSet, currentSetSum;
regionCrossfilter = crossfilter(region);
regionsCount = regionCrossfilter.groupAll().value();
codeDimension = regionCrossfilter.dimension(
function(regiion) {
//return region.centre[0].id;
return regiion.code;
}),
codeDimensionGroup = codeDimension.group(),
table = $('#outputTable'),
header = $('#outputTable > thead > tr'),
valuesRow = $('#outputTable > tbody > tr');
function appendRegionData(region, value) {
//Adds header cell and value beneath it
header.append('<th>' + region + '</th>');
valuesRow.append('<td>' + value + '</td>')
}
appendRegionData('Region', regionsCount);
allCodeDimensionGroups = codeDimensionGroup.all();
//ee
for (i = 0; i < allCodeDimensionGroups.length; i += 1) {
codeDimension.filter(allCodeDimensionGroups[i].key);
currentSet = codeDimension.top(Infinity);
appendRegionData(allCodeDimensionGroups[i].key, currentSet);
}
//Reset the filters when you are done
codeDimension.filterAll();
});
我們可以在表格中顯示如下結果。
New-York Florida Jersey
xxx aaa ccc
yyy bbb ddd
zzz eee
fff
我們如何使用crossfilter js和d3 js來做到這一點。
任何幫助將被接受。
在此先感謝。
我嘗試了很多搜索,但無法在此獲得正確的方法。 – DevGo 2014-10-04 10:23:21
有人幫忙嗎? – DevGo 2014-10-10 06:50:08