Javascript 爬升并附加嵌套对象/阵列

Javascript 爬升并附加嵌套对象/阵列,javascript,arrays,object,recursion,traversal,Javascript,Arrays,Object,Recursion,Traversal,我试图理解如何递归地将分支结构附加到对象 我试图将子对象附加到一个空的JSON对象中,该对象在构建时应该如下所示 nodeStructure: { text: { name: "Parent node" }, children: [ { text: { name: "First child" }, children: [ { text: {name:

我试图理解如何递归地将分支结构附加到对象

我试图将子对象附加到一个空的JSON对象中,该对象在构建时应该如下所示

nodeStructure: {
    text: { name: "Parent node" },
    children: [
        {
            text: { name: "First child" },
            children: [
                {
                  text: {name: "Grandchild"}
                }
            ]
        },
        {
            text: { name: "Second child" }
        }
    ]
}
下面是该代码的最简洁版本

trackFraud = async (fraudID) => {

  var root = chart_config.nodeStructure = newNode(fraudID);

  await fraudClimb(root, 1);

  var my_chart = new Treant(chart_config);

  function newNode(node) { return {text:{name:"fraud " + node}}; }

  async function fraudClimb(root, fraudID) {    
    var frauds = await findFraudByFromID.call(this, fraudID); // returns an array of "integers"

    if (frauds.length == 0) return;

    var children = root.children = [];
    for (var i = 0; i < frauds.length; i++) {
      children.push(newNode(frauds[i]));
      fraudClimb(children[i], frauds[i]);
    }   
  }
}
现在,我正试图了解如何遍历或在本例中附加到一个在数组和对象之间每隔一层交替的结构


我想真正的问题是如何递归地传递对象并附加到原始对象。

我在代码中看到两个问题:

对fraudClimb的第一次调用将忽略可用的fraudID参数。而不是:

await fraudClimb(root, 1);
我认为你需要:

await fraudClimb(root, fraudID);
不等待对fraudClimb的递归调用,但您需要在继续之前完成异步操作。因此,改变这一点:

fraudClimb(children[i], frauds[i]);
致:


关于问题1,在我添加UI组件之前,我正在截取fraudClimb
await fraudClimb(children[i], frauds[i]);