在 PrimeNg 中处理递归树节点嵌套循环的更好方法

A better way of dealing with recursive tree nodes nested loops, in PrimeNg

对于 Tree-and-Node 对象,在这种情况下,PrimeNg Tree 对象 (Angular 8) 是否有比这更好(更简洁、更有效)的处理递归子节点的方法:

for (let treeNode of treeNodes) {
    if (treeNode.children != null) {
        for (let child1 of treeNode.children) {
            // do stuff on children level 1
                if (child1.children != null) {
                    for (let child2 of child1.children) {
                          // do stuff on children level 2
                              if (child2.children != null) {
                                 // etc

即有什么方法可以避免俄罗斯娃娃式的情况,尤其是当我不知道它有多深时?

递归函数可能会起作用,具体取决于您是否需要在每个级别执行相同的操作:

const processTree = treeNodes => treeNodes.forEach(treeNode => {
  // TODO: process stuff here
  if(treeNode.children != null) processTree(treeNode.children);
});
processTree(treeNodes);

如果你真的想使用 for 之类的,这看起来像:

function processTree(treeNodes) {
  for(let treeNode of treeNodes) {
    // TODO: process stuff here
    if(treeNode.children != null) processTree(treeNode.children);
  }
}
processTree(treeNodes);