关于前端:将一维数据转化成tree

42次阅读

共计 578 个字符,预计需要花费 2 分钟才能阅读完成。

题目:
将一维数组,转化成嵌套的 tree

const arr = [{ id: 1, title: "child1", parentId: 0},
    {id: 2, title: "child2", parentId: 0},
    {id: 3, title: "child1_1", parentId: 1},
    {id: 4, title: "child1_2", parentId: 1},
    {id: 5, title: "child2_1", parentId: 2}
  ]

const buildChildrenArr = (arr) => {const res = [];
    const map = {};
    for (let i = 0; i < arr.length; i++) {map[arr[i].id] = {...arr[i], children: []};
      const key = arr[i].id;
      if (!map[key].parentId) {res.push(map[key])
      } else {const parentId = map[key].parentId
        if (parentId === map[parentId].id) {map[parentId].children.push(map[key])
        }
      }
    }
    return res;
  };

  console.log('buildChildrenArr', buildChildrenArr(arr));

也能够用递归的形式写,等我钻研分明了再补充

正文完
 0