D3 - 维护数据变更排序

时间:2017-01-09 05:01:54

标签: d3.js

我试图弄清楚我的头发。

我有一个表通过WebSocket刷新。它为频率计数的对象提供信息。关键是一个术语。该值是一个计数。我把它转换成一个数组数组,其中顶级数组包含格式为[key,value]的数组。这很有效。

我对数组进行排序和切片以获得前10名。这有效。

我将这个二维数组送入d3。

d3.select('#table').select('tbody').selectAll('tr').data(dataArray, (element) => {
  return element[0];
});

现在,首先,我无法打印此内容以查看更新选择。不在Chrome上。不在Firefox上。无权访问选择数据,只有_groups不包含同一位置的exit()元素,因此无法验证。但是,很好。 Whatevs。

我这样做:

const enterRows = selection.enter().append('tr')
enterRows.append('td').classed('key', true).text((element) => { return element[0]; });
enterRows.append('td').classed('value', true);

enterRows.merge(selection).select('.value').text((element) => { return element[1]; })

selection.exit().remove();

此时,行没有排序。我希望他们能订购。但他们并非如此。精细。不管。

selection.order();

什么都不做。

我该怎么办?

编辑:

这是数组进入data()时的示例:

[['B': 5], ['C': 3], ['A': 2]]

我无法理解生成的表行顺序。

我只想保留传入的数组顺序。

1 个答案:

答案 0 :(得分:0)

enterRows.merge(selection).order()可以解决问题。不知道为什么它是必要的,因为排序应该是稳定的,但确实如此。