dc.js:动态多维



我想在数组中创建尽可能多的维度。数据集数量是可变的。在我的例子中,我有3个,但它可以或多或少。

我的数据:

signalData: {
signal1: {
name: "",
data: {2,3,1,4,5,1,3},
},
signal2: {
name: "",
data: {2,3,1,4,5,1,3},
},
signal3: {
name: "",
data: {2,3,1,4,5,1,3},
},

我试过这个:

var cf = crossfilter(flatData);
var dimension = cf.dimension(dc.pluck("key"));
var group = [];
for (var signal in this.signalData) {
dim = null;
var dim = dimension.group().reduceSum(function (d) {
return d[signal];
});
group.push(dim);
}

但所有3张渲染图只显示信号3 的数据

我为FAQ中的条目添加了一个更简单的解决方案。

Array.forEach通常是一个很好的解决方案,因为循环当前迭代的值将被捕获在一个不会改变的局部变量中:

Object.keys(signalData).forEach(function(signal) {
dim = null;
var dim = dimension.group().reduceSum(function (d) {
return d[signal];
});
group.push(dim);
});

在这里,我们使用Object.keys()来获得一个字段名称数组,然后使用forEach对其进行循环。

(出于这个原因,我不太使用for循环。(

最新更新