javascript - d3中基于日期的JSON解析

标签 javascript json d3.js

我有一个如下所示的 JSON 文件,我想以特定方式使用 d3 进行解析。在 JSON 中,P1、P2、P3 等是产品,每个产品中的日期是键,值是所售产品的数量。我希望能够过滤出给定月份的所有属于该月的日期以及每天销售的 P1、P2、P3 的数量。在 d3 中执行此操作最简单的方法是什么?我正在尝试使用 d3.json()。

 {
    "P1": {
      "2016-06-06": 16,
      "2015-11-19": 20,
      "2015-11-10": 1,
      "2015-11-12": 68,
      "2015-11-15": 27,
      "2015-11-14": 10,
      "2015-11-17": 3,
      "2016-06-27": 39,
       ... //Hundreds of entries like this for various days of the year
     }
     "P2": { ... // Similar to P1}
     "P3": { ... // Similar to P1, P2 }
   }
 }

2016 年 10 月的输出应如下所示:

 {
   "2016-10-01": { "P1": 45, "P2": 44, "P3": 12 },
   "2016-10-02": { "P1": 12, "P2": 12, "P3": 12 },
   ...
   "2016-10-31": { "P1": 1, "P2":0, "P3": 4 }
 }

最佳答案

这实际上并不是一个 d3 问题,而是 JavaScript 中的一个简单数据转换:

var json = {
      "P1": {
        "2016-06-06": 16,
        "2015-11-19": 20,
        "2015-11-10": 1,
        "2015-11-14": 10,
        "2015-11-17": 3,
        "2016-06-27": 39
      },
      "P2": {
        "2016-06-06": Math.random() * 10,
        "2015-11-12": Math.random() * 10,
        "2015-11-15": Math.random() * 10,
        "2015-11-14": Math.random() * 10,
        "2015-11-17": Math.random() * 10,
        "2016-06-27": Math.random() * 10
      },
      "P3": {
        "2016-06-06": Math.random() * 10,
        "2015-11-19": Math.random() * 10,
        "2015-11-10": Math.random() * 10,
        "2015-11-12": Math.random() * 10,
        "2015-11-15": Math.random() * 10,
        "2015-11-14": Math.random() * 10
      }
    };
    
    var output = {};
    for (p in json){
      var v = json[p];
      for (d in v){
        if (!output[d]){
          output[d] = {};
        }
        output[d][p] = v[d];
      }
    }
    console.log(output);

关于javascript - d3中基于日期的JSON解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600089/

相关文章:

Android从json文件(.txt)获取数据

javascript - 通过 jQuery 动态插入 <script> 标签

javascript - 使用 onmouseover 事件更改 backgroundPosition

java - 无法将值映射到 Java 中 JSONObject 的属性

javascript - 如何处理奇怪组合的 websocket 消息?

javascript - D3 根据节点的文本值进行选择

javascript - d3.json() 回调中的代码未执行

javascript - D3 中的颜色填充在 If Loop 中给出错误

Javascript 错误但仅在 Firefox 4 中

javascript - 正则表达式匹配标点空格但保留标点符号