先看结果

结果

[
{
"id": 1,
"title": "张三",
"parent_id": -1,
"childs": [
{
"id": 2,
"title": "张小二",
"parent_id": 1,
"childs": [
{
"id": 3,
"title": "张小三",
"parent_id": 2,
"childs": []
}
]
}
]
}
]
再看代码

方法

/**
* 生成tree
* @param parent_id 父id
*/
const initTree = (parent_id) => {
// jsonArray 变量数据
// 第一次以后:根据id去查询parent_id相同的(相同为子数据)
// 第一次:查找所有parent_id为-1的数据组成第一级
const child = jsonArray.filter(item => item.parent_id == parent_id)
// 第一次:循环parent_id为-1数组
return child.map(item => ({
...item,
// 当前存在id(id与parent_id应该是必须有的)调用initTree() 查找所有parent_id为本id的数据
// childs字段写入
childs: initTree(item.id)
}))
}
// 首先调用initTree方法查找所有parent_id为-1的(-1认为是第一级)
const tree = initTree(-1)
console.log(tree)

jsonArray 源数据

[
{
"id": 1, // id,与parent_id关联
"title": "张三",
"parent_id": -1,//父级id -1为第一级,与id做关联查询父子级关系
},
{
"id": 2,
"title": "张小二",
"parent_id": 1,
},
{
"id": 3,
"title": "张小三",
"parent_id": 2,
}
]

js递归生成树形结构的更多相关文章

  1. js递归生成树形下拉菜单

    需求:我需要把一个单表的数据转换成类似菜单那种如图所示:我呢需要把这个菜单树放入到下框里面去如图所示: 下面是实现思路:1.第一步1.1var afTypeJson=${afTypeJson}// 这 ...

  2. Delphi中根据分类数据生成树形结构的最优方法

    一. 引言:    TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能 ...

  3. WPF下递归生成树形数据绑定到TreeView上

    最终效果图:(用于学习类的效果 图片丑了点,看官莫怪) 新建窗体 然后在前端适当位置插入如下代码: <TreeView x:Name="> <TreeView.ItemTe ...

  4. C#生成树形结构泛型类

    C#生成树形结构泛型类,使用方法: ToTree<ShowMessageUpdatesTableTreeViewModel>.ToDo(models) public class ToTre ...

  5. 在论坛中出现的比较难的sql问题:8(递归问题 树形结构分组)

    原文:在论坛中出现的比较难的sql问题:8(递归问题 树形结构分组) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有必 ...

  6. JAVA递归生成树形菜单

    递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级 ...

  7. 生成树形结构的json字符串代码(c#)供前端angular tree使用.

    框架是使用EF6.0.可以针对返回的值使用Newtonsoft.Json.dll(百度搜一下)来对返回的值序列化为json字符串,如果对以下值那就是使用JsonConvert.SerializeObj ...

  8. EasyUI使用tree方法生成树形结构加载两次的问题

    html代码中利用class声明了easyui-tree,导致easyUI解析class代码的时候先解析class声明中的easyui-tree这样组件就请求了一次url:然后又调用js初始化代码请求 ...

  9. PHP递归生成树形数组

    数据表结构 id   name  pid       ){ foreach($data as $row){ if($row['pid']==$p_id){ $tmp = $this->tree( ...

  10. EasyUI_tree根据数据库数据生成树形结构JSON格式

    @Entitypublic class PubComp { @Id private String aguid; // 菜单ID private String pguid; // 父菜单 private ...

随机推荐

  1. 万字长文带你入门docker

    1 Docker dockerfiler 镜像构建 Compose是在单机进行容器编排 Horbor 镜像仓库 Docker swarm 在多机进行容器编排 Docker Compose缺点是不能在分 ...

  2. window身上的方法 弹出框/打开和关闭

    window身上的方法内置函数 alert() parseInt() parseFloat() setInterval(); setTimeout(); clearTimeout(); clearIn ...

  3. LeetCode刷题笔记 - 2022

    这篇博客集中整理在LeetCode的刷题记录,方便查阅 258. 各位相加 - 力扣(LeetCode) (leetcode-cn.com) 代码 class Solution { public: i ...

  4. ​KubeSphere离线无网络环境部署

    KubeSphere离线无网络环境部署 KubeSphere 是 GitHub 上的一个开源项目,是成千上万名社区用户的聚集地.很多用户都在使用 KubeSphere 运行工作负载.对于在 Linux ...

  5. IO流中「线程」模型总结

    目录 一.基础简介 二.同步阻塞 1.模型图解 2.参考案例 三.同步非阻塞 1.模型图解 2.参考案例 四.异步非阻塞 1.模型图解 2.参考案例 五.Reactor模型 1.模型图解 1.1 Re ...

  6. 五月十五日java基础知识点

    1.匿名内部类适用于编写事件程序 interface Ishape{ void shape(); } class MyType{ public void outShape(Ishape s){//接口 ...

  7. SpringBoot2 简明教程

    1.环境配置: ●Java 8 & 兼容java14 .●Maven 3.3+●idea 2019.1.2 maven的settings.xml配置 <mirrors> <m ...

  8. Java运行准备JDR JRE JVM知识和环境变量的作用

    JDK.JRE.JVM简介 JDK:Java Development Kit   Java开发者工具包 JRE:Java runtime environment Java运行环境 JVM:Java V ...

  9. 这是一篇记录——django-xadmin重新开发记录

    利用下面的代码把django的版本换成和xadmin2适配的版本,注意xadmin最新版本出了3.0但是就是一个纯前端的框架,和之前的版本差异较大. 因为此时距离ddl不到24小时,所以使用旧的版本. ...

  10. gradle下载

    gradle下载:https://services.gradle.org/distributions/src.zip源码 .bin.zip安装文件.all.zip源码+安装文件 配置环境变量.