乐趣区

关于javascript:js如何将树形结构数组对象变为二维数组

将树形构造的数组对象转换为二维数组能够应用递归和深度优先遍历的办法。以下是一个示例的 JavaScript 代码,展现了如何将树形构造数组对象转换为二维数组:

// 树形构造数组对象
const treeArray = [
  {
    id: 1,
    name: '父节点 1',
    children: [
      {
        id: 2,
        name: '子节点 1 -1',
        children: [
          {
            id: 3,
            name: '子节点 1 -1-1',
            children: []},
          {
            id: 4,
            name: '子节点 1 -1-2',
            children: []}
        ]
      },
      {
        id: 5,
        name: '子节点 1 -2',
        children: [
          {
            id: 6,
            name: '子节点 1 -2-1',
            children: []}
        ]
      }
    ]
  }
];

// 将树形构造数组对象转换为二维数组
function tree2Array(treeArray) {const result = [];

  function flatten(node, level) {
    result.push({
      id: node.id,
      name: node.name,
      level: level
    });

    if (node.children && node.children.length > 0) {
      node.children.forEach(child => {flatten(child, level + 1);
      });
    }
  }

  treeArray.forEach(node => {flatten(node, 0);
  });

  return result;
}

// 调用函数进行转换
const cArray = tree2Array(treeArray);
console.log(cArray);

treeArray 是一个树形构造的数组对象,蕴含了节点的 id、name 和 children 属性。

通过 tree2Array 函数,将树形构造的数组对象转换为了二维数组 cArray。转换过程应用了递归和深度优先遍历的办法,将每个节点的信息以对象的模式增加到 result 数组中,其中蕴含了节点的 id、name 和 level 属性,level 示意节点的深度(从根节点开始计数)。最终,result 数组蕴含了所有节点的信息,造成了二维数组的构造。

退出移动版