Javascript D3数据表中的第一行排序不正确-D3/DC/Crossfilter
我有一些用于呈现数据表的基本d3/dc/crossfilter代码。datatable应按列N(即简单的行号)排序。每当在浏览器中呈现表格时,某个随机行就是最上面的行,然后在第二行中显示最高的行,然后根据需要显示下一个最高的行。我最初认为这个错误可能是因为chrome的排序不安全,但是考虑到N列的所有值都是唯一的,这不应该是一个问题 我的代码:Javascript D3数据表中的第一行排序不正确-D3/DC/Crossfilter,javascript,sorting,d3.js,dc.js,crossfilter,Javascript,Sorting,D3.js,Dc.js,Crossfilter,我有一些用于呈现数据表的基本d3/dc/crossfilter代码。datatable应按列N(即简单的行号)排序。每当在浏览器中呈现表格时,某个随机行就是最上面的行,然后在第二行中显示最高的行,然后根据需要显示下一个最高的行。我最初认为这个错误可能是因为chrome的排序不安全,但是考虑到N列的所有值都是唯一的,这不应该是一个问题 我的代码: function makeGraphs(error, trades) { trades.forEach(function(d) {
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,但出于某种原因,它是54
有什么想法吗
谢谢我建立了这方面的工作示例,但无法重现问题: 请随意提出异议,并尝试为我们重现问题 我要指出
trades.forEach(function(d) {
d['N'] = +d['N']
})
对我来说,似乎没有做任何关于排序的事情,因为在排序中,它是
-d.N
,无论如何它都会转换成一个数字。这很奇怪。你能为这个问题创建一个工作示例吗?JSFIDLE或类似的站点在这方面做得很好。看起来它们仍然是按字符串排序的,尽管forEach在顶部。我想知道代码是否按此处显示的顺序执行。^是的。奇怪的是,它可以在internet explorer中工作,但不能在chrome中工作