javascript - Sorter trestruktur av objekter etter klasseegenskap
Jeg har en trestruktur av objekter (JavaScript/TypeScript), alle avledet fra samme klasse (T). Hvert objekt kan ha eller ikke ha barn av samme objekt (Liste). Derfor kan disse barna ha eller ikke ha sine egne barn (Liste), og så videre...
Jeg trenger å sortere hvert av disse "nivåene" av noder etter en spesifikk egenskap ved objektet.
Akkurat nå håndterer jeg bare hver forelder og deres barn:
nodes.sort((a, b) => {
return a.Id- b.Id;
});
nodes.forEach(function (node) {
node.children.sort((a, b) => {
return a.Id- b.Id;
});
});
Jeg trenger imidlertid en metode som vil sortere alle barn av barn, barn av disse barna, og så videre. Jeg antar at dette vil innebære rekursjon, men jeg er ikke sikker på den beste måten å håndtere dette på med tanke på effektivitet.
Svar #1
a) Sorter nodene.
b) Gå gjennom hver node, hvis noden har barn, gjenta trinn A med dens barn.
function sortNodesAndChildren(nodes) {
nodes.sort();
nodes.forEach(function (node) {
if (nodeHasChildren(node)) {
sortNodesAndChildren(node.children);
}
})
}
