D3.JS和映射桶

时间:2016-06-16 19:04:00

标签: d3.js

我是D3的新手,我无法理解如何从D3访问'sum'字段。通过基本聚合,我可以使用以下命令轻松映射字段:

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

当响应格式如下时,会出现问题:     “水桶”:[                {                “1”:{                   “价值”:5975                },                “key”:“XXXXXXXXXXXX”,                “doc_count”:5376             },

我真正需要的是与原始函数相同的“关键”字段,但频率是上述数据的值。

感谢您的帮助! -John

1 个答案:

答案 0 :(得分: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;
}, {});