
我们从一个包含教育信息和多个动态日期键值对的数组开始。每个对象代表一个教育实体(如“school”、“colleg”),其后跟着一系列以日期字符串(如“2021-12”)为键、对应数值为值的字段。这种结构虽然在某些场景下可能方便生成,但在需要按日期聚合或进行时间序列分析时,会带来挑战。
以下是原始数据的示例:
var arr = [{
"education": "school",
"2021-12": 65.45,
"2022-01": 172762.27,
"2022-02": "959.5"
}, {
"education": "colleg",
"2021-12": 270.13,
"2022-01": 105429534.09,
"2022-02": 53543770.9,
"2022-03": 100004545
}, {
"education": "university",
"2021-12": 168396.95,
"2022-01": 170417648.96999997,
"2022-02": 1202822.9
}];在此结构中,日期键是动态的,且每个教育实体可能不包含所有日期的数据。
我们的目标是将数据重构为一个新的数组,其中每个对象代表一个特定的日期。在这个日期对象内部,原始数据的 education 字段值将作为新的键,其对应的日期值将作为该键的值。此外,每个对象还将包含一个明确的 date 字段来标识其所属的日期。
以下是期望的输出结构示例:
立即学习“Java免费学习笔记(深入)”;
[{
"school": "65.45",
"colleg": "270.13",
"university": "168396.95",
"date": "2021-12"
}, {
"school": "172762.",
"colleg": "105429534.09",
"university": "170417648.96999997",
"date": "2022-01"
}, {
"school": "959.5",
"colleg": "53543770.9",
"university": "1202822.9",
"date": "2022-02"
}, {
"colleg": "959.5",
"date": "2022-03",
}]这种结构使得按日期访问数据变得直观,并且便于对不同教育类型在特定日期的表现进行比较。
为了实现上述转换,我们需要执行以下几个关键步骤:
下面是使用JavaScript实现的具体代码:
var arr = [{
"education": "school",
"2021-12": 65.45,
"2022-01": 172762.27,
"2022-02": "959.5"
}, {
"education": "colleg",
"2021-12": 270.13,
"2022-01": 105429534.09,
"2022-02": 53543770.9,
"2022-03": 100004545
}, {
"education": "university",
"2021-12": 168396.95,
"2022-01": 170417648.96999997,
"2022-02": 1202822.9
}];
// 使用 Set 收集唯一的日期和教育类型,以确保不重复
let uniqueDates = new Set();
let uniqueEducations = new Set();
arr.forEach(item => {
for (const key in item) {
if (item.hasOwnProperty(key)) { // 确保是以上就是JavaScript中JSON数据重构:将动态日期键转换为结构化对象的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号