首页 > 解决方案 > 从带有括号内的父 ID 的 Array javascript 构建树

问题描述

现在,在您将此问题标记为重复之前,请听我说完。

我在 reactjs 中有一个 json 响应,就像

organisationUnits: [
  {
     name: "0.Mzondo",
     id: "nW4j6JDVFGn",
     parent: {
       id: "Ppx2evDIOFG"
     }
 },
 {
   name: "1 Chipho",
   id: "eE4p4gXpR4p",
   parent: {
     id: "JKNTgsOVMOo"
   }
 }, {}, {}, ....
  
}]

现在我在网上搜索了一个列表到树的解决方案,我有很多来自人们的代码,但它似乎不起作用。我也试过https://github.com/yi-ge/js-tree-listhttps://www.npmjs.com/package/list-to-tree以及https://www.npmjs.com/包/数组到树

但没有任何效果,我认为这是因为我的父母 ID 被困在括号中。所以没有任何在线工作。如果有人对此有解决方案,将不胜感激。

标签: javascriptarraysjsonreactjstree

解决方案


好的,对于所有将来可能会陷入困境的人,这就是我解决问题的方法。

令人惊讶的是我不是很聪明,所以选择了错误的职业......

var arrayToTree = require('array-to-tree');

var array = [
  {
     name: "0.Mzondo",
     id: "nW4j6JDVFGn",
     parent: {
       id: "Ppx2evDIOFG"
     }
 },
 {
   name: "1 Chipho",
   id: "eE4p4gXpR4p",
   parent: {
     id: "JKNTgsOVMOo"
   }
 }, {}, {}, ....
  
} 

array.map((item) => {
                    //

                    if(item.parent != null){
                        //console.log(item.parent.id)
                        item.parent = item.parent.id
                    } else {
                        item.parent = undefined
                    }
                });

                var tree = arrayToTree(array, {
                    parentProperty: 'parent',
                    customID: 'id'
                });

                console.log( tree );

                this.setState({
                    orgUnits : tree
                });

完毕。非常感谢所有帮助过的人。真的很喜欢


推荐阅读