element-ui树形控件后台返回的数据+生成组织树的工具类

生成树形组织结构需要以下两个步骤:

  1. 后台返回的数据必须是一个符合规范的JSON格式的树形结构。

例如,以下是符合规范的树形JSON数据结构示例:

[
  {
    "id": 1,
    "name": "Node1",
    "children": [
      {
        "id": 2,
        "name": "Node2"
      },
      {
        "id": 3,
        "name": "Node3"
      }
    ]
  },
  {
    "id": 4,
    "name": "Node4",
    "children": [
      {
        "id": 5,
        "name": "Node5"
      }
    ]
  }
]
  1. 使用工具类将数据转换为树形结构。

以下是一个生成树形结构的示例代码:

function buildTree(list) {
  let map = {}, node;
  for(let i = 0; i < list.length; i++) {
    node = list[i];
    node.children= [];
    map[node.id] = node;
    if(node.parentId) {
      if(!map[node.parentId].children) {
        map[node.parentId].children= [];
      }
      map[node.parentId].children.push(node);
    }
  }
  return map[0].children;
}

以上代码中的list是后台返回的数据,idparentId是节点ID和父级节点ID。

示例1:

后台返回的数据结构为:

[
  {
    "id": 1,
    "name": "Node1",
    "pid": 0
  },
  {
    "id": 2,
    "name": "Node2",
    "pid": 1
  },
  {
    "id": 3,
    "name": "Node3",
    "pid": 1
  },
  {
    "id": 4,
    "name": "Node4",
    "pid": 2
  },
  {
    "id": 5,
    "name": "Node5",
    "pid": 2
  }
]

我们可以使用以下代码将上述数据转换为树形结构:

let data = [
  {id: 1, name: 'Node1', pid: 0},
  {id: 2, name: 'Node2', pid: 1},
  {id: 3, name: 'Node3', pid: 1},
  {id: 4, name: 'Node4', pid: 2},
  {id: 5, name: 'Node5', pid: 2},
]

let result = buildTree(data);
console.log(result);

示例2:

后台返回的数据结构为:

[
  {
    "Id": 1,
    "Name": "Node1",
    "ParentId": null
  },
  {
    "Id": 2,
    "Name": "Node2",
    "ParentId": 1
  },
  {
    "Id": 3,
    "Name": "Node3",
    "ParentId": 1
  },
  {
    "Id": 4,
    "Name": "Node4",
    "ParentId": 2
  },
  {
    "Id": 5,
    "Name": "Node5",
    "ParentId": 2
  }
]

使用以下代码将上述数据转换成树形数据结构:

let data = [
  {Id: 1, Name: 'Node1', ParentId: null},
  {Id: 2, Name: 'Node2', ParentId: 1},
  {Id: 3, Name: 'Node3', ParentId: 1},
  {Id: 4, Name: 'Node4', ParentId: 2},
  {Id: 5, Name: 'Node5', ParentId: 2},
]

let result = buildTree(data.map(node => {
  return {
    id: node.Id,
    name: node.Name,
    parentId: node.ParentId
  }
}));

console.log(result);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:element-ui树形控件后台返回的数据+生成组织树的工具类 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • ES6变量赋值和基本数据类型详解

    ES6变量赋值和基本数据类型详解 ES6变量赋值 let 和 const 在ES6引入了两个新的关键字let和const来声明变量,与ES5中的var不同的是,let和const声明的变量具有块级作用域。 let用来声明可变的变量,可以在同一作用域中多次进行赋值操作: let a = 1; a = 2; const用来声明不可变的变量,只能在声明时赋值,一旦…

    JavaScript 2023年6月10日
    00
  • JS检测浏览器开发者工具是否打开的方法详解

    下面我将详细讲解JS检测浏览器开发者工具是否打开的方法。 一、检测方法 1. 监听 console 字符串输出 开发者工具在控制台中输出字符串时,会触发 console 对象的一些方法,如 console.log()、console.warn()、console.error() 等。我们可以通过监听这些方法的调用来判断开发者工具是否打开: var open …

    JavaScript 2023年6月11日
    00
  • 老生常谈ES6中的类

    ES6中的类是JavaScript语言中的一种新的语法糖,它提供了一种更加优雅的面向对象的编程方式,让JavaScript变得更加易读、易维护。在ES6之前,我们在JavaScript中实现继承是通过原型链来实现的。但是这种方式缺少了一个明确的语法结构,不够直观,而且容易出现错误。ES6中引入了类的概念,让我们能够更加方便、清晰地定义类和继承关系。下面我将详…

    JavaScript 2023年6月11日
    00
  • 基于javascript实现日历功能原理及代码实例

    下面我会详细讲解“基于javascript实现日历功能原理及代码实例”的完整攻略,包括日历功能原理、代码实现和实例说明。 日历功能原理 1. 获取日期信息 日历功能的基本原理是通过JavaScript获取当前日期或手动设置日期,并根据日期信息计算出该月的日期信息。可以使用Date()对象来获取日期信息,如下: let date = new Date(); /…

    JavaScript 2023年5月27日
    00
  • js实现键盘自动打字效果

    实现键盘自动打字效果可以分为以下几个步骤: 1. 获取需要自动打印的文本 首先,需要准备需要打印的文本内容。这可以通过在HTML中插入一个元素,并给该元素设置一个文本内容,然后使用JavaScript获取该元素的innerText或innerHTML属性值,就可以得到需要打印的文本。 示例代码 HTML代码: <p id="text&quot…

    JavaScript 2023年5月28日
    00
  • js 与或运算符 || && 妙用

    下面是关于“JS 与或运算符 || && 妙用”的完整攻略,包含两个示例说明: 一、JS 与或运算符概述 在JS中,&&和||是常用的逻辑运算符,它们可以将多个条件判断合并在一起。在编写条件判断语句时,通过巧妙地使用逻辑运算符,可以让代码更加简洁、易懂,提高开发效率。 1.1 逻辑与运算符(&&) 逻辑与运算符…

    JavaScript 2023年5月18日
    00
  • JS实现可恢复的文件上传示例详解

    下面是关于JS实现可恢复文件上传的详细攻略。 标题 什么是可恢复文件上传? 可恢复文件上传是指,当文件上传被中断或者失败时,重新连接服务器上传时,上传的过程能够从之前的进度恢复,并继续上传。这样可以节省时间和流量,提高用户体验。 如何实现可恢复文件上传 可恢复文件上传的实现需要前后端的配合,下面我会先讲述前端的实现方式。 文件分片及上传控制 将要上传的文件分…

    JavaScript 2023年5月27日
    00
  • JavaScript高级程序设计 读书笔记之八 Function类及闭包

    JavaScript高级程序设计 读书笔记之八 Function类及闭包 Function类 Function类的特点 Function类本身也是一个函数,它可以像工厂函数一样构建新的函数实例。 使用Function构造函数构建函数,可以动态地创建函数语句。 可以将字符串形式的代码,通过Function的形式执行。 Function构造函数的使用 Funct…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部