javascript - 将单个 JSON 重构为嵌套数组
问题描述
我有以下 JSON:
[
{Id: "1", Id2: "1", Year: "2019", Month: "1", Value: "123"},
{Id: "1", Id2: "1", Year: "2019", Month: "2", Value: "3"},
{Id: "1", Id2: "1", Year: "2019", Month: "3", Value: "-123"},
{Id: "1", Id2: "1", Year: "2019", Month: "4", Value: "-4123"},
...
{Id: "1", Id2: "1", Year: "2020", Month: "1", Value: "214"},
{Id: "1", Id2: "1", Year: "2020", Month: "2", Value: "-41123"},
{Id: "1", Id2: "1", Year: "2020", Month: "3", Value: "12344"},
{Id: "1", Id2: "1", Year: "2020", Month: "4", Value: "1232"}
]
我想变成这样:
[{
Year : "2019",
data : [{
Month : "01",
Value : "123"
},{
Month : "02",
Value : "2223"
}...
},{
Year : "2020",
data: [{
Month : "01",
Value : "214"
}...
}]
不知道如何轻松做到这一点,似乎它现在超出了我的范围。
有人能指出我正确的方向吗?
非常感谢,
鱼
解决方案
尝试使用 Array.reduce
这是一个工作示例,假设同一月份/年份组合没有重复条目
var testData = [
{Id: "1", Id2: "1", Year: "2019", Month: "1", Value: "123"},
{Id: "1", Id2: "1", Year: "2019", Month: "2", Value: "3"},
{Id: "1", Id2: "1", Year: "2019", Month: "3", Value: "-123"},
{Id: "1", Id2: "1", Year: "2019", Month: "4", Value: "-4123"},
{Id: "1", Id2: "1", Year: "2020", Month: "1", Value: "214"},
{Id: "1", Id2: "1", Year: "2020", Month: "2", Value: "-41123"},
{Id: "1", Id2: "1", Year: "2020", Month: "3", Value: "12344"},
{Id: "1", Id2: "1", Year: "2020", Month: "4", Value: "1232"}
];
var reducedTestData = testData.reduce((acc, item) => {
let itemData = {
Month: item.Month,
Value: item.Value
};
return Object.assign({}, acc, {
[item.Year]: acc.hasOwnProperty(item.Year)
? Object.assign(
{},
acc[item.Year],
{
data: acc[item.Year].data.concat(itemData)
}
)
: {data: [itemData]}
});
}, {});
document.body.appendChild(document.createElement('pre')).innerHTML = JSON.stringify(reducedTestData, null, 2);
推荐阅读
- c# - c#如何在插入文本之前将光标设置在末尾
- reactjs - React 在重新加载时不加载页面
- java - java在方法中返回String[],String[].length不正确
- ios - “导入桥接头失败”iOS 单元测试
- delphi - 如何取消 IOmniParallelSimpleLoop?
- operator-keyword - 如何在 Caffe2 中应用像 numpy 这样的“收集”操作?
- c# - 集合序列化中的newtonsoft json自引用循环错误
- php - Group Concat 查询中的最大 id
- amazon-s3 - 如何在使用 Active Storage 上传之前调整图像大小(与 AWS 链接)
- python - 为什么这个 TensorFlow 代码段会在喂食时引发错误?