dc.js:动态多维度
dc.js: dynamically multiple dimensions
我想创建与数组中的数据集一样多的维度。数据集数量是可变的。在我的示例中,我有 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个渲染图都只显示了signal3的数据
我为 entry in the 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 循环。)
我想创建与数组中的数据集一样多的维度。数据集数量是可变的。在我的示例中,我有 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个渲染图都只显示了signal3的数据
我为 entry in the 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 循环。)