【发布时间】:2021-08-09 14:55:36
【问题描述】:
我有以下格式的数据,
const data = {
"Class-1": [{
"section": "A",
"total": "45",
"boys": "31",
"girls": "14",
"subjects": 3,
"class-teacher": "ABC"
}, {
"section": "B",
"total": "30",
"boys": "20",
"girls": "10",
"subjects": 3,
"class-teacher": "XYZ"
}],
"Class-2": [{
"section": "A",
"total": "40",
"boys": "25",
"girls": "15",
"subjects": 4,
"class-teacher": "ABC2"
}],
"Class-3": [{
"section": "A",
"total": "44",
"boys": "29",
"girls": "15",
"subjects": 4,
"class-teacher": "ABC3"
}, {
"section": "B",
"total": "40",
"boys": "29",
"girls": "11",
"subjects": 4,
"class-teacher": "XYZ1"
}],
"Class-4": [{
"section": "A",
"total": "50",
"boys": "30",
"girls": "20",
"subjects": 5,
"class-teacher": "ABC4"
}]
}
我想用 JavaScript 将上述数据导出为 CSV 文件,如下图所示,
我尝试使用d3-dsv (this),但无法达到预期的效果。使用d3-dsv,如果我将数据展平为一个直接的对象数组,我不会得到类 - Class-1、Class-2、Class-3 和 Class-4。
使用d3-dsv,如果我提供以下格式的数据,我会得到如下附件的输出,
数据格式-
[{
"section": "A",
"total": "45",
"boys": "31",
"girls": "14",
"subjects": 3,
"class-teacher": "ABC"
}, {
"section": "B",
"total": "30",
"boys": "20",
"girls": "10",
"subjects": 3,
"class-teacher": "XYZ"
}, {
"section": "A",
"total": "40",
"boys": "25",
"girls": "15",
"subjects": 4,
"class-teacher": "ABC2"
}, {
"section": "A",
"total": "44",
"boys": "29",
"girls": "15",
"subjects": 4,
"class-teacher": "ABC3"
}, {
"section": "B",
"total": "40",
"boys": "29",
"girls": "11",
"subjects": 4,
"class-teacher": "XYZ1"
}, {
"section": "A",
"total": "50",
"boys": "30",
"girls": "20",
"subjects": 5,
"class-teacher": "ABC4"
}]
【问题讨论】:
-
从转换的角度来看,将标题(部分、总计等)放在第 1 行和下面的其他内容会更简单......您是否需要第 1 行的 Class-1 和第 2 行的标题?
-
你试过的代码在哪里?
-
@RobinMackenzie 如果不是行,我不介意为类添加单独的列。喜欢班级,部分,总,男孩,女孩,科目,班主任。
-
@RobinMackenzie 我编辑了我的问题,请看一下
标签: javascript d3.js formatter export-csv