我试图弄清楚我的头发。
我有一个表通过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]]
我无法理解生成的表行顺序。
我只想保留传入的数组顺序。
答案 0 :(得分:0)
enterRows.merge(selection).order()
可以解决问题。不知道为什么它是必要的,因为排序应该是稳定的,但确实如此。