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 循环。)