使用树构造树的问题

时间:2018-07-29 22:58:07

标签: javascript typescript ecmascript-6 tree-traversal recursive-datastructures

因此,我有一个基本遍历一棵树并构造另一棵树的方法,基本上是一个映射方法,但是是一个数组,但是面临一个问题,即除了第一层之外,所有节点都不能被正确地构造成树。谁能指出我在这里做错了什么?

 convertToTree(arcm: any, tree: any) {
    let a = {
      text: arcm.name,
    };

    Object.assign(tree, a);
    if (arcm.parcmTreeMapping && arcm.parcmTreeMapping.length) {
      let arr = new Array<any>(arcm.parcmTreeMapping.length).fill(new Object());
      tree['children'] = arr;
      arcm.parcmTreeMapping.forEach((item, index) => {

        this.convertToTree(item, tree.children[index], descList)
      });
    }
    else{
      return;
    }
  }

1 个答案:

答案 0 :(得分:1)

iofill()一起使用时,它将首先构造一个对象,然后使用对同一对象的引用填充数组。您最终得到对一个对象的引用数组:

new Array()

您可以尝试改为let arr = new Array(5).fill(new Object()) // they're all the same object console.log(arr[0] === arr[1]) console.log(arr[2] === arr[3]) // modify one modifies them all: arr[0].name = "Mark" console.log(arr[1], arr[2]),以便每次创建一个新对象:

map()