J'ai le JSON suivant -
[{
"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"
},
.
.
.
]
Je dois combiner l'enfant et le nœud parent. Pour que le résultat soit le suivant -
[{
"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"
}
]
}
.
.
.
]
J'ai essayé de chercher SO, mais pas de chance.
J'ai également essayé de supprimer le nœud "INV", mais pas de chance. Il va juste [objet objet] dans Angular en raison de la boucle des nœuds les uns dans les autres.
3 Réponses :
Je ne peux que supposer que le JSON est un tableau. Vous pouvez utiliser une combinaison des méthodes .map , .reduce et .concat de Array pour obtenir ce que vous voulez:
const result = data
.map((item) => item.inv.map((inv) => ({ ctin: item.ctin, ...inv })))
.reduce((a, b) => a.concat(b), []);
Ou simplement .flatMap .
@VLAZ je ne le recommanderai pas encore, jusqu'à ce qu'il soit pris en charge par tous les principaux navigateurs
Essayez ceci,
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); */
}
Cela peut être fait en utilisant la fonction map et concat:
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);
et le code est:
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"
}
]
}
];