js中把jsonArray递归的方法转成树形的json对象

一个数组

var nodes = [
    {"id":0,"title":"第一级1","parentid":0},
    {"id":1,"title":"第二级1","parentid":2},
    {"id":2,"title":"第二级2","parentid":2},
    {"id":3,"title":"第三级1","parentid":4},
    {"id":4,"title":"第三级2","parentid":3}
];

转成的树结构

var treeData = {
    "id": "2",
    "title": "第一级1",
    "children": [
        {
            "id": "3",
            "title": "第二级1",
            "children": [
                {
                    "id": "6",
                    "title": "第三级2",
                    "children": [
                        
                    ]
                }
            ]
        },
        {
            "id": "4",
            "title": "第二级2",
            "children": [
                {
                    "id": "5",
                    "title": "第三级1",
                    "children": [
                        
                    ]
                }
            ]
        }
    ]
}

代码如下:

  var nodes = [
      { "id": 2, "title": "第一级1", "parentId": 0 },
      { "id": 3, "title": "第二级1", "parentId": 2 },
      { "id": 4, "title": "第二级2", "parentId": 2 },
      { "id": 5, "title": "第三级1", "parentId": 4 },
      { "id": 6, "title": "第三级2", "parentId": 3 }
    ];
    function convertToTreeData(data, pid) {
      const result = [];
      let temp = [];
      for (let i = 0; i < data.length; i++) {
        if (data[i].parentId === pid) {
          const obj = { 'title': data[i].title, 'id': data[i].id }
          temp = convertToTreeData(data, data[i].id)
          if (temp.length > 0) {
            obj.children = temp
          }
          result.push(obj)
        }
      }
      return result;
    }
    const treeData = convertToTreeData(nodes, 0);
    console.log(treeData);

参数说明请参考原文,地址如下:《原文链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容