首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将表格json数据转换为包图表的d3层次数据

将表格json数据转换为包图表的d3层次数据
EN

Stack Overflow用户
提问于 2022-03-12 18:49:57
回答 1查看 38关注 0票数 1

我在JSON文件中有一个小的数据集,我想把它转换成层次数据格式来创建一个圆形的包图。这是我的数据集:

代码语言:javascript
复制
{
"Marks": [
{"student": "Maria", "AI": 95, "DB": 77, "CG": 31, "ITP": 97, "LIT": 45},
{"student": "Sam", "AI": 85, "DB": 37, "CG": 39, "ITP": 45, "LIT": 55}
]
}

这是我想要的输出:

代码语言:javascript
复制
{
"name": "Marks",
 "children": [
  { "name": "Maria",
 "children": [
  { "name": "AI" , "marks" : 95},
  { "name": "DB" , "marks" : 77},
  { "name": "CG" , "marks" : 35},
  { "name": "ITP" , "marks" : 97},
  { "name": "LIT" , "marks" : 45},
]
},
{ "name": "Sam",
 "children": [
  { "name": "AI" , "marks" : 85},
  { "name": "DB" , "marks" : 37},
  { "name": "CG" , "marks" : 39},
  { "name": "ITP" , "marks" : 45},
  { "name": "LIT" , "marks" : 55},
]
}
]
}

知道我该怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-12 22:15:21

尝尝这个

代码语言:javascript
复制
var newObj = {};
Object.keys(marks).forEach((key) => {
 newObj.name = key;
  newObj.children = [];
  var i = 0;
  marks[key].forEach((element) => {
    Object.keys(element).forEach((k) => {
      if (k == "student") newObj.children.push({ name: element[k], children: [] });
     else newObj.children[i].children.push({ name: k, marks: element[k] });
    });
    i++;
  });
});

结果

代码语言:javascript
复制
{
    "name": "Marks",
    "children": [
        {
            "name": "Maria",
            "children": [
                {
                    "name": "AI",
                    "marks": 95
                },
                {
                    "name": "DB",
                    "marks": 77
                },
                {
                    "name": "CG",
                    "marks": 31
                },
                {
                    "name": "ITP",
                    "marks": 97
                },
                {
                    "name": "LIT",
                    "marks": 45
                }
            ]
        },
        {
            "name": "Sam",
            "children": [
                {
                    "name": "AI",
                    "marks": 85
                },
                {
                    "name": "DB",
                    "marks": 37
                },
                {
                    "name": "CG",
                    "marks": 39
                },
                {
                    "name": "ITP",
                    "marks": 45
                },
                {
                    "name": "LIT",
                    "marks": 55
                }
            ]
        }
    ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71452352

复制
相关文章

相似问题

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