Unsere Datenstruktur ist ein verschachteltes Array mit Objekten
interface dtModel {
id: number;
permission: number;
childs: dtModel[];
}
const data: dtModel[] = [
{
id: 1,
permission: 2,
childs: [
{
id: 2,
permission: 1,
childs: [
{
id: 3,
permission: 3,
childs: [],
},
],
},
],
},
{
id: 4,
permission: 1,
childs: [
{
id: 5,
permission: 2,
childs: [
{
id: 6,
permission: 3,
childs: [
{
id: 7,
permission: 1,
childs: [],
},
],
},
],
},
],
},
];
Ich habe versucht, mit Hilfe von RxJs ein abgeflachtes Array wie dieses zu erstellen, was mir noch nicht gelungen ist
[
{id:1,permission:2},
{id:2,permission:1},
{id:3,permission:3},
{id:4,permission:1},
{id:5,permission:2},
{id:6,permission:3},
{id:7,permission:1}
]
Ich habe versucht, das mit Hilfe von 'Reduzieren' zu tun, aber da das Eigentum meiner Kinder nicht immer die gleiche Länge hat, konnte ich das mit diesem Ansatz nicht tun.
of(data)
.pipe(
map((items: dtModel[]) => {
return items.reduce((res, curr) => {
res.push({ id: curr.id, permission: curr.permission });
return res;
}, []);
})
)
.subscribe(console.log);
StackBlitz
Lösung des Problems
Sie müssen einen Baum (= Ihre Datenstruktur) durchqueren und für jeden Knoten {id://some id,permission://some permission}
ein Ergebnisarray übertragen.
Dafür braucht man kein rxjs.
Keine Kommentare:
Kommentar veröffentlichen