2017-01-09 5 views
0

私はこれを理解しようとしている私の髪をリッピングしています。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]] 

私は結果表の行の順序の意味をなさないことができます。

着信アレイの順序を保持したいだけです。

+0

私はあなたの問題を抱えていません。注文する必要がありますか?データバインディングは、データ配列の順序に従って行われます。あなたは期待される成果とともに、あなたのデータ配列を少し投稿できますか? –

+1

それはまさに私が意味することです。表の行は、データ配列の順序で並べられていません。それは保存されていません。 – alyssackwan

+0

今私は参照してください。もう一度、つまり更新項目を選択するのではなく、 'data'のキー機能を削除すると、' data(dataArray) 'だけになります。 –

答えて

0

enterRows.merge(selection).order()です。注文は安定しているはずなのになぜ必要なのか分かりませんが、それはあります。

関連する問題