在 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);
对于 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);