需要将 json 中的子节点移动到父节点



我有以下JSON -

[{ 
"ctin":"guju3j3jgjh3b",
"inv":[ 
{ 
"inum":"OS1920/16060",
"idt":"01-08-2019",
"val":17000.00,
"pos":"20",
"rchrg":"N"
}, { 
"inum":"OS1920/16066",
"idt":"02-08-2019",
"val":17602.00,
"pos":"29",
"rchrg":"N"
}
]
},{ 
"ctin":"guj324djgjh3b",
"inv":[ 
{ 
"inum":"OS1920/16064",
"idt":"03-08-2019",
"val":19125.00,
"pos":"26",
"rchrg":"N"
}
]
}
.
.
.
]

我需要组合子节点和父节点。 这样结果就会如下——

[{ 
"ctin":"guju3j3jgjh3b",
"inum":"OS1920/16060",
"idt":"01-08-2019",
"val":17000.00,
"pos":"20",
"rchrg":"N"
}, { 
"ctin":"guju3j3jgjh3b",
"inum":"OS1920/16066",
"idt":"02-08-2019",
"val":17602.00,
"pos":"29",
"rchrg":"N"
}, { 
"ctin":"guj324djgjh3b",
"inum":"OS1920/16064",
"idt":"03-08-2019",
"val":19124,
"pos":"26",
"rchrg":"N"
},
.
.
.
]

尝试搜索SO,但没有运气。

另外,尝试删除"INV"节点,但没有运气。它只是在 Angular 中由于节点之间的循环而进入 [对象对象]。

可以使用map函数和concat来完成:

const data = [{
"ctin":"guju3j3jgjh3b",
"inv":[
{
"inum":"OS1920/16060",
"idt":"01-08-2019",
"val":17000.00,
"pos":"20",
"rchrg":"N"
}, {
"inum":"OS1920/16066",
"idt":"02-08-2019",
"val":17602.00,
"pos":"29",
"rchrg":"N"
}
]
},{
"ctin":"guj324djgjh3b",
"inv":[
{
"inum":"OS1920/16064",
"idt":"03-08-2019",
"val":19125.00,
"pos":"26",
"rchrg":"N"
}
]
}
];

代码是:

let notFlattened = data.map(({ctin, inv}) => {
inv = inv.map(r=> {
r.ctin = ctin;
return r;
});
return inv;
})
let merged = [].concat.apply([], notFlattened);
console.log(merged);

我只能假设JSON是一个数组。您可以使用 Array 的.map.reduce.concat方法的组合来获得您想要的内容:

const result = data
.map((item) => item.inv.map((inv) => ({ ctin: item.ctin, ...inv })))
.reduce((a, b) => a.concat(b), []);

试试这个,

for (var j = 0; j < this.datasource.length; j++) {
for (var i = 0; i < this.datasource1[j].inv.length; i++) {
this.datasource[j].inv[i].ctin = this.datasource[j]["ctin"];
}
/* delete this.datasource[j]['ctin'];
this.result.push(this.datasource[j].inv); */
}

最新更新