历史搜索

js列表转成树形结构

游客2024-09-30 07:53:01

有如下列表结构:

[
    {
        id: 1,
        text: '节点 1',
        parentId: 0 //这里用 0 表示为顶级节点
    },
    {
        id: 2,
        text: '节点 1_1',
        parentId: 1 //通过这个字段来确定子父级
    }
    ...
]

要求转化成如下树形结构:

[
    {
        id: 1,
        text: '节点 1',
        parentId: 0,
        children: [
            {
                id:2,
                text: '节点 1_1',
                parentId:1
            }
        ]
    }
]

实现代码如下:

function listToTree(data) {
  let temp = {};
  let treeData = [];
  for (let i = 0; i < data.length; i++) {
    temp[data[i].id] = data[i];
  }
  for (let i in temp) {
    if (+temp[i].parentId != 0) {
      if (!temp[temp[i].parentId].children) {
        temp[temp[i].parentId].children = [];
      }
      temp[temp[i].parentId].children.push(temp[i]);
    } else {
      treeData.push(temp[i]);
    }
  }
  return treeData;
}

相信你能用到,拿走不谢!

标签:前端