【发布时间】:2015-12-12 13:12:48
【问题描述】:
我有一些用于呈现数据表的基本 d3/dc/crossfilter 代码。数据表应按 N 列(即行号)排序。每当在浏览器中呈现表格时,一些随机行是顶行,然后在第二行中显示最高行,然后是适当的下一个最高行。我最初认为这个错误可能是由于 chrome 的排序不安全,但考虑到 N 列的所有值都是唯一的,这应该不是问题。
我的代码:
function makeGraphs(error, trades) {
trades.forEach(function(d) {
d['N'] = +d['N']
})
var tradeTable = dc.dataTable("#dc-table-graph");
var trades = crossfilter(trades);
var NDimension = trades.dimension(function (d) {
return d['N']});
tradeTable.width(960).height(800)
.dimension(NDimension)
.group(function(d) { return "trades"
})
.size(110)
.columns([
function(d) { return d.N; },
function(d) { return d['Profit']; },
])
.sortBy(function(d){ return -d.N; })
.order(d3.descending)
dc.renderAll();
};
我的输出如下所示
N Profit
54 .56
107 .36
106 .33
105 .25
104 .21
all the way down to N=1
显然第一行不应该是 54,但由于某种原因它是。
有什么想法吗?
谢谢
【问题讨论】:
-
这很奇怪。你能创建一个问题的工作示例吗? JSfiddle 或类似的网站很适合这个。
-
尽管顶部有 forEach,但它们看起来仍按字符串排序。我想知道代码是否按照此处显示的顺序执行。
-
^ 它是。奇怪的是它适用于 Internet Explorer,但不适用于 chrome
标签: javascript sorting d3.js dc.js crossfilter