【问题标题】:How can I "unstack" my JSON data in d3.js?如何在 d3.js 中“取消堆叠”我的 JSON 数据?
【发布时间】:2020-08-03 04:40:37
【问题描述】:

我有一个 JSON 数组中的数据,如下所示:

[{"TEACHER":3.7},{"STUDENT":1.9}]

我想要的输出是一个如下所示的 JSON 数组:

var statements = [
  {
    name: "TEACHER",
    value: 3.7
  },
  {
    name: "STUDENT",
    value: 1.9
  }
];

如何“取消堆叠”我必须添加变量标签的数据?

【问题讨论】:

    标签: javascript json d3.js


    【解决方案1】:

    这就是我想出的。不过,可能有更优雅的方式来做到这一点。

    var x = [{"TEACHER":3.7},{"STUDENT":1.9}];
    
    console.log(unstack(x));
    
    function unstack(stacked){
        var unstacked = [];
        stacked.forEach((element) => {
          unstacked.push({
                name: Object.keys(element)[0],
                value: Object.values(element)[0]
            });
        });
        return unstacked;
    }

    【讨论】:

      【解决方案2】:

      它是您原始对象的唯一键吗?如果是这种情况,您可以使用唯一的项目Object.keys()Object.entries() 返回。如果还有其他属性,您可以在键中查找匹配项并进行相应处理。

      const input = [{"TEACHER":3.7},{"STUDENT":1.9}];
      const output = [];
      
      input.forEach(item => {
          const key = Object.keys(item)[0];
      
          output.push({name: key, value: item[key]});
      });
      
      console.log(output);

      【讨论】:

      • 完美!非常感谢。
      猜你喜欢
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多