2016-06-16 15 views
1

D3の新機能で、D3から 'sum'フィールドへのアクセス方法を理解できません。基本的な凝集に私は簡単に次のコマンドを使用してフィールドをマップすることができるよ:D3.JSとマッピングバケット

var load_data = resp.aggregations.my_summary.buckets.map(function(d) { 
     return { 
      letter: d.key, 
      frequency: d.doc_count 
     } 
    }); 

応答は次のようにフォーマットされたときに問題が発生します。 「バケット」:[ { 「1」:{ を「値」:5975 }、 「キー」:「XXXXXXXXXXXX」、 「doc_count」:5376 }、

は本当に私が必要なものを元の関数から同じ「キー」フィールドであるが、周波数がします上記のデータの価値。

ありがとうございました! -John

答えて

0

私があなたの質問を正しく理解していれば、同じキーで、周波数が異なる多くの匿名のオブジェクトが存在します。各ユニークキーを合計して累積頻度を合計したいとします。

Array.reduce()メソッドを使用すると、この問題の解決に役立てることができます。ここでD3がどのように必要なのかよく分かりません - d3.sum()メソッドを使用しようとしましたか?

var b = [ 
    {key: 'a', freq: 45454}, {key: 'a', freq: 4545}, 
    {key: 'b', freq: 1232}, {key: 'b', freq: 4544} 
]; 

var counts = b.reduce(function(p, d) { 
    if (d.key in p) 
    p[d.key] += d.freq; 
    else 
    p[d.key] = d.freq; 

    return p; 
}, {});