首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3恢复嵌套对象

d3恢复嵌套对象
EN

Stack Overflow用户
提问于 2018-07-25 17:59:45
回答 1查看 51关注 0票数 1

在我的代码中,我使用d3.est()函数从数据集中删除了重复的行,并附上了输出示例。

现在我的JSON数组中有了唯一的条目,我想对这个数据集执行一些计算,特别是找出每个日期的平均“周期时间”。在此示例中,理想情况下输出应为:

代码语言:javascript
复制
[
  {
    "key": "2012-03",
    "values": [
      {
        "mean": 16,
      }
    ]
  },
  {
    "key": "2012-06",
    "values": [
      {
        "mean": 10,
      }
    ]
  },
  {
    "key": "2012-07",
    "values": [
      {
        "mean": 8,
      }
    ]
  }
]

我试着在网上关注了几个例子,但我似乎遗漏了一些明显的东西,有人能帮我吗?

代码语言:javascript
复制
var summaryTable = [
  {
    "key": "2012-03",
    "values": [
      {
        "key": "AAA-1",
        "value": {
          "cycletime": 14
        }
      },
      {
        "key": "AAA-2",
        "value": {
          "cycletime": 18
        }
      }
    ]
  },
  {
    "key": "2012-06",
    "values": [
      {
        "key": "AAA-3",
        "value": {
          "cycletime": 8
        }
      },
      {
        "key": "AAA-4",
        "value": {
          "cycletime": 12
        }
      }
    ]
  },
  {
    "key": "2012-07",
    "values": [
      {
        "key": "AAA-5",
        "value": {
          "cycletime": 15
        }
      },
      {
        "key": "AAA-5",
        "value": {
          "cycletime": 1
        }
      },
      {
        "key": "AAA-6",
        "value": {
          "cycletime": 8
        }
      }
    ]
  }
]

var d3Table = d3.nest()
    .key(function(d) { return d['key']; })
    .rollup(function(d) { 
        return {
                "medianCycleTime": d3.mean(d, d3.values(d['values']['value'])),
        };
    })
    .entries(summaryTable);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 21:06:29

在仔细检查了您的d3.nest数据之后,我找到了要在rollup中使用的函数。

rollup的参数d是一个包含具有该键的所有对象的数组。您必须首先对其进行索引,否则将得到Array类的values()方法。

代码语言:javascript
复制
var d3Table = d3.nest()
    .key(function(d) { return d['key']; })
    .rollup(function(d) {
        return { 
            "medianCycleTime": d3.mean(d[0]['values'], d => d.value.cycletime ),
        };
    })
    .entries(summaryTable);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51516078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档