当前位置: 首页 > 知识库问答 >
问题:

有没有更简单的递归方法来编写这个函数?

终安和
2023-03-14

我有一个javascript函数,它接受一个数组,并对该数组的每个项执行另一个函数。有很多重复的部分,所以我假设有一种更简单的递归方式来写这个:

null

function tree(life) {
  for (let bugs of life) {
    if (typeof bugs === `object`) {
      for (let soil of bugs) {
        if (typeof soil === `object`) {
          for (let dirt of soil) {
            if (typeof dirt === `object`) {
              for (let stem of dirt) {
                if (typeof stem === `object`) {
                  for (let leaf of stem) {
                    if (typeof leaf === `object`) {
                      for (let weed of leaf) {
                        if (typeof weed === `object`) {
                          for (let puff of weed) {
                            if (typeof puff === `object`) {
                              for (let high of puff) {
                                if (typeof high === `object`) {
                                  for (let toke of high) {
                                    if (typeof toke === `object`) {} else {
                                      $tree.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.appendChild(dom(toke))
                                    }
                                  }
                                } else {
                                  $tree.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.appendChild(dom(high))
                                }
                              }
                            } else {
                              $tree.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.appendChild(dom(puff))
                            }
                          }
                        } else {
                          $tree.lastElementChild.lastElementChild.lastElementChild.lastElementChild.lastElementChild.appendChild(dom(weed))
                        }
                      }
                    } else {
                      $tree.lastElementChild.lastElementChild.lastElementChild.lastElementChild.appendChild(dom(leaf))
                    }
                  }
                } else {
                  $tree.lastElementChild.lastElementChild.lastElementChild.appendChild(dom(stem))
                }
              }
            } else {
              $tree.lastElementChild.lastElementChild.appendChild(dom(dirt))
            }
          }
        } else {
          $tree.lastElementChild.appendChild(dom(soil))
        }
      }
    } else {
      $tree.appendChild(dom(bugs));
    }
  }
}

null

数组中的每个项要么是字符串,要么是嵌套数组。字符串不必是唯一的,所以我认为我不能使用object和map()来代替。

共有1个答案

赖绪
2023-03-14

sudo-code,类似这样的代码

function traverse(target, parent){
   if(typeof target === `string`){
      parent.appendChild(dom(target));
   }else{
      target.forEach(node => traverse(node, parent.lastElementChild)
   }
}

traverse(life, $tree)
 类似资料:
  • 我正在创建一个JSP. tag文件来处理这个用例: 其中,行为将是获取请求参数,转义其值以“安全”使用,并将转义值放回某个作用域(例如请求),与参数同名(尽管它可能是另一个名称)。 我有一个可以工作的实现,但我有scriptlet,因为我找不到在JSTL中使用变量名的方法。但我不是JSTL向导,所以我想看看我是否缺少语法/方法。这是正在工作的文件: (我真希望艾尔能自动逃脱。)

  • 问题内容: 这个问题已经困扰了我一段时间了。有没有更简单的方法在python中编写嵌套循环?例如,如果我的代码是这样的: 会有更简单的方法吗?我知道这段代码有效,但是当您像我这样缩进而不是使用2个空格时,可能会遇到问题。 哦,在这个例子中,只有4个嵌套循环使事情变得更容易。 问题答案: 如果像示例中那样频繁地遍历笛卡尔积,则可能需要研究Python 2.6的itertools.product; 如

  • 我想使用以下循环创建一个新列。表中只有“open”和“start”列。我想创建一个新列“startopen”,如果“start”等于1,那么“startopen”等于“open”。否则,“startopen”等于此新创建列上方行中的任何“startopen”。目前,我能够通过以下方式实现这一点: 这有效,但对于大型数据集来说非常慢。是否有任何内置函数可以更快地完成此操作?

  • 我正在开发一个java程序,它接受输入的分数,给出输入的总数和平均值,但是我很难计算出如何获得当前输入的最高分数“我使用了大量嵌套的else-if语句,但必须有一种简单的方法来实现这一点,而不是键入100个else-if语句这是我的代码。我在else-if语句开始的地方添加了一条注释,以确定最高级别

  • 问题内容: 我正在尝试弄清楚如何解析一些XML(对于Android应用程序),在Java中很难做到这一点似乎很荒谬。似乎需要创建一个具有各种回调(startElement,endElement等)的XML处理程序,然后您必须注意将所有这些数据更改为对象。类似于本教程。 我真正需要的只是将XML文档更改为多维数组,甚至更好的是拥有某种Hpricot处理器。有没有办法做到这一点,还是真的必须在上面的示

  • 问题内容: 来自Gson项目的此链接似乎表明,将类型化的Map序列化为JSON时,我将必须执行以下操作: 很酷,这行得通,但是似乎有很多开销( 整个Type Adapter类? )。我使用了其他JSONLib之类的JSON库,它们使您可以通过以下方式构建地图: 或者,如果我有一个自定义类,则如下所示: 该过程更加手动,但是所需的代码更少,并且没有开销来为Number创建自定义类型适配器,或者在大多