要将平行数据转换为树形结构,可以使用递归的方式进行处理。下面是一个示例的 JavaScript 代码:

function buildTree(data, parentId) {
  var tree = [];
  
  for (var i = 0; i < data.length; i++) {
    if (data[i].parentId === parentId) {
      var node = {
        id: data[i].id,
        name: data[i].name,
        children: buildTree(data, data[i].id)
      };
      
      tree.push(node);
    }
  }
  
  return tree;
}

上面的代码中,data 是一个包含平行数据的数组,每个元素都有一个 parentId 属性,表示其父节点的 id。parentIdnullundefined 的元素表示根节点。函数 buildTree 接受两个参数:dataparentId,返回一个树形结构的数组。

使用示例如下:

var data = [
  { id: 1, name: 'A', parentId: null },
  { id: 2, name: 'B', parentId: null },
  { id: 3, name: 'A1', parentId: 1 },
  { id: 4, name: 'A2', parentId: 1 },
  { id: 5, name: 'A1a', parentId: 3 },
  { id: 6, name: 'A1b', parentId: 3 },
  { id: 7, name: 'B1', parentId: 2 },
  { id: 8, name: 'B2', parentId: 2 }
];

var tree = buildTree(data, null);
console.log(tree);

输出结果如下:

[
  {
    "id": 1,
    "name": "A",
    "children": [
      {
        "id": 3,
        "name": "A1",
        "children": [
          { "id": 5, "name": "A1a", "children": [] },
          { "id": 6, "name": "A1b", "children": [] }
        ]
      },
      { "id": 4, "name": "A2", "children": [] }
    ]
  },
  {
    "id": 2,
    "name": "B",
    "children": [
      { "id": 7, "name": "B1", "children": [] },
      { "id": 8, "name": "B2", "children": [] }
    ]
  }
]

上述代码将平行数据转换为了树形结构,每个节点都有一个 idname 属性,以及一个 children 属性,表示其子节点的数组

js 把平行数据转成树形结构

原文地址: https://www.cveoy.top/t/topic/ihFf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录