ZBLOG

将数组转成树形结构js

以下是一个基于 JavaScript 的示例代码,用于将数组转换为树形结构:

function arrayToTree(arr) {
  const map = {};
  const tree = [];

  arr.forEach(item => {
    // 创建节点
    map[item.id] = { ...item, children: [] };
  });

  Object.values(map).forEach(item => {
    if (item.parentId !== null) {
      // 将子节点添加到父节点的children数组中
      map[item.parentId].children.push(item);
    } else {
      // 根节点直接添加到tree数组中
      tree.push(item);
    }
  });

  return tree;
}

这个实现假设输入的数组中每个元素都有idparentId属性,表示节点的唯一标识和父节点的标识。它使用了一个映射表map来存储每个节点,并通过遍历数组将各个节点连接起来。

你可以使用类似以下方式来调用函数并打印结果:

const arr = [
  { id: 1, parentId: null, name: 'Root' },
  { id: 2, parentId: 1, name: 'Node A' },
  { id: 3, parentId: 1, name: 'Node B' },
  { id: 4, parentId: 2, name: 'Node A-1' },
];

const tree = arrayToTree(arr);
console.log(tree);

输出结果会显示转换后的树形结构。请注意,这只是一个简单的示例实现,可能无法处理所有特殊情况。如果你有其他需求或者需要更复杂的实现,请提供更详细的要求。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=12406

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?