相关疑难解决方法(0)

使用父字段从平面列表构造层次结构树?

我有一个带有parent字段的"页面"对象列表.此父字段引用列表中的另一个对象.我想基于此字段从此列表中创建树层次结构.

这是我的原始列表:

[
  {
    id: 1,
    title: 'home',
    parent: null
  },
  {
    id: 2,
    title: 'about',
    parent: null
  },
  {
    id: 3,
    title: 'team',
    parent: 2
  },
  {
    id: 4,
    title: 'company',
    parent: 2
  }
]
Run Code Online (Sandbox Code Playgroud)

我想将它转换为这样的树结构:

[
  {
    id: 1,
    title: 'home',
    parent: null
  },
  {
    id: 2,
    title: 'about',
    parent: null,
    children:  [
      {
        id: 3,
        title: 'team',
        parent: 2
      },
      {
        id: 4,
        title: 'company',
        parent: 2
      }
    ]
]
Run Code Online (Sandbox Code Playgroud)

我希望有一个可重用的函数,我可以随时调用任意列表.有人知道处理这个问题的好方法吗?任何帮助或建议将不胜感激!

javascript arrays tree json hierarchy

18
推荐指数
2
解决办法
2万
查看次数

将父子数组转换为树

任何人都可以帮助转换以下父子对象列表:

[
   {
      "name":"root",
      "_id":"root_id",
   },
   {
      "name":"a1",
      "parentAreaRef":{
         "id":"root_id",
      },
      "_id":"a1_id",
   },
   {
      "name":"a2",
      "parentAreaRef":{
         "id":"a1_id",
      },
      "_id":"a2_id",
   },
   {
      "name":"a3",
      "parentAreaRef":{
         "id":"a2_id",
      },
      "_id":"a3_id",
   },
   {
      "name":"b1",
      "parentAreaRef":{
         "id":"root_id",
      },
      "_id":"b1_id",
   },
   {
      "name":"b2",
      "parentAreaRef":{
         "id":"b1_id",
      },
      "_id":"b2_id",
   },
   {
      "name":"b3",
      "parentAreaRef":{
         "id":"b1_id",
      },
      "_id":"b3_id",
   }
]

显示父子关系的树结构:

[
    {
        "name": "root",
        "_id":"root_id",
        "children": [
            {
                "name": "a1",
                "_id":"a1_id",
                "children" : [
                    {
                        "name" : "a2",
                        "_id":"a2_id",
                        "children" : [
                            {
                                "name" : "a3"
                                "_id":"a3_id"
                            }
                        ]
                    } …

javascript algorithm

16
推荐指数
2
解决办法
3万
查看次数

用JavaScript递归构建树

我试图从一系列对象中递归构建一棵树。我目前正在使用该reduce()方法遍历数组中的项目,找出哪些孩子属于特定项目并填充它,然后递归地填充这些孩子的孩子,依此类推。但是,我一直无法取最后一个节点(例如,在这种情况下为波斯和暹罗)并将它们放在数组中(请参见下面的预期和当前输出)

    let categories = [
        { id: 'animals', parent: null },
        { id: 'mammals', parent: 'animals' },
        { id: 'cats', parent: 'mammals' },
        { id: 'dogs', parent: 'mammals' },
        { id: 'chihuahua', parent: 'dogs' },
        { id: 'labrador', parent: 'dogs' },
        { id: 'persian', parent: 'cats' },
        { id: 'siamese', parent: 'cats' }
    ];

   const reduceTree = (categories, parent = null) => 
    categories.reduce(
        (tree, currentItem) => {

            if(currentItem.parent == parent){
               tree[currentItem.id] = reduceTree(categories, currentItem.id);  
            }              

            return tree;
        }, …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm recursion

6
推荐指数
1
解决办法
162
查看次数

使用AngularJS从基于唯一字段的嵌套JSON中获取信息

我有一个json如下.

{  
   "id":14,
   "discussion":8,
   "parent":0,
   "userid":2,
   "subject":"communication skill discussion 2",
   "message":"<p>hi all to communication discussion 2 </p>",
   "children":[  
      24,
      16,
      15
   ]
},
{  
   "id":15,
   "discussion":8,
   "parent":14,
   "userid":2,
   "subject":"Re: communication skill discussion 2",
   "message":"<p>hiiiiiiiiii</p>",
   "children":[  
      25,
      23
   ],
},
{  
   "id":23,
   "discussion":8,
   "parent":15,
   "userid":2,
   "created":1461562317,
   "modified":1461562317,
   "mailed":0,
   "subject":"Re: communication skill discussion 2",
   "message":"<p>helloooo</p>",
   "children":[  

   ],
}
Run Code Online (Sandbox Code Playgroud)

我想首先获取其ID与子数组中的elments匹配的详细信息,例如id:14有3个子项24,16,15.然后控件应该直接转到id:15并获取id的详细信息:15.Again id有孩子,例如.考虑id:23,没有孩子,将直接打印消息.

请指导我如何使用角度的ng-repeat实现此目的?

javascript json angularjs

5
推荐指数
1
解决办法
885
查看次数

从平面对象数组构建对象树数组

我想从平面数组构建一个树数组:

这是平面阵列:

nodes = [
    {id: 1, pid: 0, name: "kpittu"},
    {id: 2, pid: 0, name: "news"},
    {id: 3, pid: 0, name: "menu"},
    {id: 4, pid: 3, name: "node"},
    {id: 5, pid: 4, name: "subnode"},
    {id: 6, pid: 1, name: "cace"}
];
Run Code Online (Sandbox Code Playgroud)

注意:id = 节点 id;pid = 父节点 ID。

我想把它转换成这个数组:

nodes = [{
    id: 1,
    name: 'kpittu',
    childs: [{
        id: 6,
        name: 'cace'
    }]
}, {
    id: 2,
    name: 'news'
}, {
    id: 3,
    name: 'menu',
    childs: [{
        id: 4, …
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular

4
推荐指数
1
解决办法
5708
查看次数

将平面对象数组转换为嵌套对象数组

我正在尝试转换来自数据库的对象的平面数组,以提供给需要嵌套结构才能管理可扩展子行的反应表。

我制作了一个 CodeSandbox ,它非常不言自明:

https://codesandbox.io/s/tender-chatterjee-kdssi?file=/src/App.js

基本上,我的原始数据的结构如下:

  [
    {
      code: "A0",
      parent: ""
    },
    {
      code: "A01",
      parent: "A0"
    },
    {
      code: "A011",
      parent: "A01"
    },
    {
      code: "B0",
      parent: ""
    },
    {
      code: "B01",
      parent: "B0"
    },
    {
      code: "B011",
      parent: "B01"
    }
  ]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为以下结构:

  [
    {
      code: "A0",
      parent: "",
      subRows: [
        {
          code: "A01",
          parent: "A0",
          subRows: [
            {
              code: "A011",
              parent: "A01"
            }
          ]
        }
      ]
    },
    {
      code: "B0",
      parent: "",
      subRows: [
        {
          code: "B01", …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 reactjs

3
推荐指数
1
解决办法
904
查看次数

在 Typescript 中将数组转换为树

我在存储的对象数组中有结构数据库,如下所示:

 arry = [{"name": "a", "id": "2", "data":"foo", "parent": "1"},
 {"name": "b", "id": "3", "data":"foo", "parent": "2"},
 {"name": "c", "id": "4", "data":"foo", "parent": "3"},
 {"name": "d", "id": "5", "data":"foo", "parent": "3"},
 {"name": "e", "id": "6", "data":"foo", "parent": "4"},
 {"name": "f", "id": "7", "data":"foo", "parent": "5"}]
Run Code Online (Sandbox Code Playgroud)

我想要这样的嵌套结构

{
"2":{
   "name": "a",
   "data": "foo",
  "3":{
     "name": "b",
     "data":"foo",
     "4":{
        "name": "c",
        "data":"foo",
        "6":{
           "name": "e",
           "data": "foo",
          };
       },
      "5":{
         "name": "d",
         "data": "foo",
         "7":{
            "name": "f",
            "data": "foo"
           }
        }
      } …
Run Code Online (Sandbox Code Playgroud)

javascript data-structures typescript angular6

1
推荐指数
1
解决办法
6133
查看次数