具有以下树json对象:
{
"Season1": {
"Title1": {
"a1": {
"val1": "100",
"val2": "200",
"val3": "300"
},
"a2": {
"val1": "100",
"val2": "200",
"val3": "300"
}
},
"Title2": {
"c1": {
"val1": "100",
"val2": "200",
"val3": "300"
},
"d2": {
"val1": "100",
"val2": "200",
"val3": "300"
}
}
}
}
试图使用以下功能格式化json:
function Format(obj){
return Object.entries(obj).flatMap(([key, val]) => {
let o = { name: key}
if(Object.keys(val).some(function(k) {return typeof val[k] === 'object'})){
o['_children'] = Format(val)
} else {
Object.keys(val).map(function(a){
o[a] = val[a]
})
}
return [o]
})
}
这将通过键返回嵌套对象的数组:
[
{
"name": "Season1",
"_children": [
{
"name": "Title1",
"_children": [
{
"name": "a1",
"val1": "100",
"val2": "200",
"val3": "300"
},
{
"name": "a2",
"val1": "100",
"val2": "200",
"val3": "300"
}
]
},
{
"name": "Title2",
"_children": [
{
"name": "c1",
"val1": "100",
"val2": "200",
"val3": "300"
},
{
"name": "d2",
"val1": "100",
"val2": "200",
"val3": "300"
}
]
}
]
}
]
挑战是在每个父级中计算底层键的小计,分别为val1,val2,val3,例如。因此,“ Title1”,“ Title2”和“ Season1”在将输出填充到表中之后可以填充空白的小计单元格。预期的输出应如下所示:[
{
"name": "Season1",
"_children": [
{
"name": "Title1",
"_children": [
{
"name": "a1",
"val1": "100",
"val2": "200",
"val3": "300",
},
{
"name": "a2",
"val1": "100",
"val2": "200",
"val3": "300",
}
],
"val1": 200,
"val2": 400,
"val3": 600
},
{
"name": "Title2",
"_children": [
{
"name": "c1",
"val1": "100",
"val2": "200",
"val3": "300",
},
{
"name": "d2",
"val1": "100",
"val2": "200",
"val3": "300",
}
],
"val1": 400,
"val2": 400,
"val3": 600
}
],
"val1": 600,
"val2": 800,
"val3": 1200
}
]
如何为此目的更新格式功能?有人可以分享任何想法或解决方案吗?谢谢!
具有以下树json对象:{“ Season1”:{“ Title1”:{“ a1”:{“ val1”:“ 100”,“ val2”:“ 200”,“ val3”:“ 300”}}, “ a2”:{“ val1”:“ 100”,...