我有一个对象的树结构(JavaScript / TypeScript),它们都是由同一个类(T)派生而来的。每个对象可能包含也可能不包含同一对象(List)的子对象。因此,这些孩子可能包含也可能不包含自己的孩子(List),等等......
我需要对这些"中的每一个进行排序"由对象的特定属性组成的节点。
目前,我只处理每位家长及其子女:
nodes.sort((a, b) => {
return a.Id- b.Id;
});
nodes.forEach(function (node) {
node.children.sort((a, b) => {
return a.Id- b.Id;
});
});
但是,我需要一种方法来对孩子的所有孩子,孩子的孩子等进行分类。我想这会涉及递归,但我不确定处理这个问题的最佳方法在效率方面。
答案 0 :(得分:1)
a)对节点进行排序。
b)浏览每个节点,如果节点有子节点,则重复步骤A及其子节点。
function sortNodesAndChildren(nodes) {
nodes.sort();
nodes.forEach(function (node) {
if (nodeHasChildren(node)) {
sortNodesAndChildren(node.children);
}
}
}