Basic dc.js dataTable 显示错误的数据

Basic dc.js dataTable shows wrong data

我在 dc.js 中有一个基本数据表。我试图让它显示数据中所有值的列表。但是它显示了一个子集。此处非常简化 Fiddle:https://jsfiddle.net/dhbrt0om/1/

let ndx = crossfilter(data);
let chart = dc.dataTable("#tableExample");
let data_examplefield = ndx.dimension(function(d) {
    return d.examplefield;
});

chart
  .columns([
    function(d) {
      return d.examplefield;
    },
  ])
  .dimension(data_examplefield)

dc.renderAll();

(完整数据在 fiddle)

我已将数据表维度设置为相关字段。并且列函数应该 return 字段值。但它只显示了 5 个可能的值。在 .columns 函数中使用断点单步执行代码,我可以看到它 returning 20 个值 - 但不是来自正确的 20 个字段。

我可以看到,如果我将 data_examplefield 更改为:

let data_examplefield = ndx.dimension(function(d) {
    return d.examplefield ? d.examplefield : 'none';
});

这有助于 return 计算值...但是为什么呢?为什么 'none' 不在那里?

我显然误解了一些基本的东西并且假设我会踢自己,但我就是看不到它。任何帮助表示赞赏。

啊,我看到这是因为每个字段都需要有一个值。它实际上列在 crossfilter gotchas wiki 中:https://github.com/crossfilter/crossfilter/wiki/Crossfilter-Gotchas

If the key function returns undefined for a single row, say due to a missing field, this can corrupt the entire index.