【发布时间】:2021-09-06 17:20:47
【问题描述】:
我有一个条件要求我使用 json 多维制作一个 html 表。 这是我的 JSON 数据示例
let year = [
{
ym : "202006",
data : [
{
202007: "100",
202008: "100",
202009: "100",
202010: "100",
202011: "96.71",
202012: "100",
202101: "100",
202102: "96.43"
}
]
}
];
这是我的预期结果
我已经设法使用循环创建表头。但是我发现使用这个 JSON 数据生成表数据时很困难。 任何形式的帮助都会非常感激。谢谢
编辑:
我能够使用原始数据生成表头。 我使用的代码是
result = arr.reduce(function (r, a) {
r[a.TIME_PERIOD_HEADER] = r[a.TIME_PERIOD_HEADER] || [];
r[a.TIME_PERIOD_HEADER].push(a);
return r;
}, Object.create(null));
var keys = Object.keys(result);
keys.map((value, index) => {
$('#tbl_row').append('<th>'+value+'</th>')
})
生成表头后,我尝试使用以下方法将原始 json 数组修改为新的 json 数组:
var o = arr.reduce( (a,b) => {
a[b.TIME_PERIOD] = a[b.TIME_PERIOD] || [];
a[b.TIME_PERIOD].push({[b.TIME_PERIOD_DATA]:b.PERCENT});
return a;
}, {});
var a = Object.keys(o).map(function(k) {
var m = Object.assign.apply({},o[k]);
keys.forEach( (x) => { if ( !(x in m) ) m[x] = 0 });
return {TIME_PERIOD: k, TIME_PERIOD_DATA: m};
});
//this code produce the first JSON data (let year = ....)
【问题讨论】:
-
您能否发布生成标题的代码以及您尝试生成正文的任何内容?否则,我们只能猜测您生成正文的代码为什么会失败。
-
如果您可以创建标题,单行数据基本上是相同的循环 - 可能更容易,因为您将使用值而不是键
-
@mkaatman 我已经这样做了
-
@JaromandaX 我使用原始数据创建标题,然后将其修改为让 year = ....
-
您的预期输出仅显示每个
ym一行。但是data是一个数组。这不匹配。
标签: javascript html arrays json