当前位置:首页 > JavaScript

js实现树形结构

2026-04-04 03:09:43JavaScript

实现树形结构的方法

在JavaScript中实现树形结构通常涉及创建节点对象,并通过递归或迭代方式构建层级关系。以下是几种常见方法:

使用对象和数组表示树

树的基本结构可由对象和数组组合实现,每个节点包含数据和子节点引用:

const tree = {
  value: 'root',
  children: [
    {
      value: 'child1',
      children: [
        { value: 'grandchild1', children: [] },
        { value: 'grandchild2', children: [] }
      ]
    },
    {
      value: 'child2',
      children: []
    }
  ]
};

类实现树节点

通过类定义树节点,便于扩展方法:

class TreeNode {
  constructor(value) {
    this.value = value;
    this.children = [];
  }

  addChild(childNode) {
    this.children.push(childNode);
  }
}

const root = new TreeNode('root');
const child1 = new TreeNode('child1');
root.addChild(child1);

递归遍历树

深度优先遍历示例:

function traverse(node) {
  console.log(node.value);
  node.children.forEach(child => traverse(child));
}
traverse(tree);

扁平数组转树结构

将扁平数组转换为层级树:

function buildTree(items, parentId = null) {
  return items
    .filter(item => item.parentId === parentId)
    .map(item => ({
      ...item,
      children: buildTree(items, item.id)
    }));
}

const flatArray = [
  { id: 1, parentId: null, name: 'root' },
  { id: 2, parentId: 1, name: 'child1' },
  { id: 3, parentId: 1, name: 'child2' }
];
const tree = buildTree(flatArray);

常用树操作

查找节点:

js实现树形结构

function findNode(root, targetValue) {
  if (root.value === targetValue) return root;
  for (const child of root.children) {
    const found = findNode(child, targetValue);
    if (found) return found;
  }
  return null;
}

这些方法覆盖了树形结构的基本实现和常见操作,可根据具体需求选择或组合使用。

标签: 结构js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…