私はこれを理解しようとしている私の髪をリッピングしています。D3 - データの並べ替えを変更する
WebSocketでテーブルをリフレッシュしています。これは、頻度カウントを持つオブジェクトを送ります。キーは用語です。値はカウントです。私はこれをとり、配列の配列に変換します。最上位の配列には[key、value]という形式の配列が含まれています。これは機能します。
私は配列をソートしてスライスしてトップ10を取得します。これは機能します。
この2次元配列をd3に送ります。
d3.select('#table').select('tbody').selectAll('tr').data(dataArray, (element) => {
return element[0];
});
まず、更新選択時にこれを印刷して確認することはできません。 Chromeでは使用できません。 Firefoxではありません。選択データへのアクセスはありません。同じ場所にexit()
の要素が含まれていない_groups
だけであるため、確認の方法はありません。しかし、大丈夫です。 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();
何もしません。
私は何をしますか?
EDIT:それはdata()
に入るよう
は、ここで、アレイのサンプルです:
[['B': 5], ['C': 3], ['A': 2]]
私は結果表の行の順序の意味をなさないことができます。
着信アレイの順序を保持したいだけです。
私はあなたの問題を抱えていません。注文する必要がありますか?データバインディングは、データ配列の順序に従って行われます。あなたは期待される成果とともに、あなたのデータ配列を少し投稿できますか? –
それはまさに私が意味することです。表の行は、データ配列の順序で並べられていません。それは保存されていません。 – alyssackwan
今私は参照してください。もう一度、つまり更新項目を選択するのではなく、 'data'のキー機能を削除すると、' data(dataArray) 'だけになります。 –