我使用crossfilter,d3和dc制作一些仪表板。 数据集是这样的:
{comune: "1001", year:1861, val: 10000},
{comune: "1001", year:1871, val: 10010},
{comune: "1001", year:1881, val: 20110},
...
年份和val都是数字。 我已经创建了一个功能来制作按钮以允许过滤数据集。这里的步骤:
1-我制作了一个cf维度
dimension = cfData.dimension( function (d) { return d.year; } );
2-和一个简单的计数小组
group = dimension.group().reduceCount(function (d) { return d.year; });
3-比我得到整个组,对于每个项目,我使用键作为标签添加按钮并过滤数据集
var bottoni = prinDashboard.group[settings.group.group].top(Infinity)
bottoni.forEach(function(d, i) {
$(settings.container).append('<button type="button" class="btn btn-primary btn-small" data-filter="' + d.key + '">' + d.key + '</button>')
})
问题是:即使所有键都是数字键,组输出(bottoni)也没有正确排序。关键是:1861年,1871年,1881年,......,2011除了&#34; 1861&#34;值是最后一个而不是第一个!
我尝试使用.order()函数但结果很奇怪......所以我不会发布我的尝试...
您可以在此处查看所有内容:http://www.danielepennati.com/prove/mapping/prova_bottoni.php 有一些控制台日志,所以你可以看到发生了什么。
任何建议都会非常感激!
更新: 这里有一个简化调试的JSFiddle ... http://jsfiddle.net/danielepennati/qmGmU/2/
由于
丹尼尔