cda*_*lto 7 javascript sorting recursion typescript
我有一个对象的树结构(JavaScript/TypeScript),所有对象都派生于同一类(T)。每个对象可能包含也可能不包含同一对象(列表)的子对象。因此,这些孩子可能包含也可能不包含他们自己的孩子(列表),依此类推......
我需要根据对象的特定属性对节点的每个“级别”进行排序。
目前我只处理每个父母及其孩子:
nodes.sort((a, b) => {
return a.Id- b.Id;
});
nodes.forEach(function (node) {
node.children.sort((a, b) => {
return a.Id- b.Id;
});
});
Run Code Online (Sandbox Code Playgroud)
但是,我需要一种方法来对孩子的所有孩子、这些孩子的孩子等进行排序。我想这将涉及递归,但我不确定在效率方面处理此问题的最佳方法。
a) 对节点进行排序。
b) 遍历每个节点,如果该节点有子节点,则对其子节点重复步骤 A。
function sortNodesAndChildren(nodes) {
nodes.sort();
nodes.forEach(function (node) {
if (nodeHasChildren(node)) {
sortNodesAndChildren(node.children);
}
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4220 次 |
| 最近记录: |