GOOGLE ADS

Samstag, 23. April 2022

glätten Sie ein verschachteltes Array von Objekten mit RxJS

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

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...