示例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>const lists=[{"name":'刘邦',"id":'1',"relation":''},{"name":'李渊',"id":'2',"relation":''},{"name":'福临',"id":'3','relation':''},{"name":'玄烨',"id":'4','relation':'3'},{"name":'刘盈',"id":'5','relation':'1'},{"name":'李世民',"id":'5','relation':'2'},,{"name":'刘肥',"id":'5','relation':'1'}]function  recursion(list, rootValue) {var arr = []list && list.forEach(item => {if (item.relation === rootValue) {// 要去找这个item它的子级  item.id = 子级的relationarr.push(item) // 如果找到了item 先把它放到数组中const child = recursion(list, item.id)if (child.length) {// 表示了找到了子元素item.children = child}}})return arr}console.log(recursion(lists,''));</script>
</body></html>

打印结果

js 递归算法将扁平数据处理成树状数据相关推荐

  1. (js)扁平数组树状化 树状数组扁平化

     扁平数组树状化(利用递归,两个函数完成树状转化 ) 数组格式: let list = [{ id: 1, title: '标题1', p_id: 0 },{ id: 2, title: '标题2', ...

  2. js 将二维对象数组转换成树状结构数据

    const list = [{ id: 2, key: { id: 1, name: '测试' }, value: { id: 2, name: 'waer' } },{ id: 3, key: { ...

  3. 权限列表(包字典)递归成树状结构

    权限列表(包字典)递归成树状结构 def per_data(permission_list, parent_id):tree = []for per in permission_list:if per ...

  4. 解决 js 对 long 型数据处理丢失精度问题~ 对象映射器和扩展SpringMVC转换器

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!!! 本文介绍的是解决 ...

  5. R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram)

    R语言ggplot2可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram) 目录

  6. Python使用matplotlib可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Dendrogram)

    Python使用matplotlib可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Dendrogram) 目录

  7. JS求多个数组的重复数据

    今天朋友问了我这个问题:JS求多个数组的重复数据 注: 1.更准确的说是只要多个数组中有两个以上的重复数据,那么这个数据就是我需要的 2.单个数组内的数据不存在重复值(当然如果有的话,你可以去重) 3 ...

  8. 将一个数字划分成树状

    将一个数字划分成树状 题目如下:同学问的,就用最近复习前端用得最多的JavaScript写了一段程序解决,记录一下. function RandomNumBoth(Min,Max){ //取min与m ...

  9. ArcGIS10.8中如何获取线状、面状数据的折点,并计算折点坐标?

    如下图所示为面状要素,ArcGIS10.8中如何获取线状和面状数据的折点(起点.终点.中点.端点),并计算折点的坐标(X,Y,Z,M)?       下图所示为线状(Polyline)和面状(Poly ...

最新文章

  1. Git快速入门+复习笔记
  2. iphone7测试软件,iPhone7如何测试网速 ping命令测试网速方法介绍
  3. 萤火虫算法_一种优化方法:蜂鸟优化算法
  4. [读书笔录]解析卷积神经网络(魏秀参)——目录和绪论
  5. RTKLIB源码之单点定位/相对定位后处理简化版—第一版
  6. 解决 Github用户名 变为 invalid-email-address 问题
  7. 前馈神经网络练习:使用tensorflow进行葡萄酒种类识别
  8. 组装机怎么重装系统?组装机U盘装系统方法
  9. 2022-2028全球全盘加密软件行业调研及趋势分析报告
  10. AI换脸在电竞圈火了!大司马PDD大秀肌肉辣舞
  11. 基于matlab介绍传感器融合和跟踪工具箱中用于评估跟踪器性能的不同定量分析工具(附源码)
  12. C++标准库分析总结(一)——<标准库简介>
  13. Python读写yaml文件(使用PyYAML库)
  14. win10打开程序不弹出窗口,只在任务栏显示
  15. 转:Python数据分箱,计算woe,iv
  16. el-tree 动态树结构
  17. JSON压缩:JSONMinify
  18. C++程序设计基础案例教程pdf
  19. 全国二级c语言通过秘诀,2020年全国计算机二级C语言备考技巧
  20. 微软暑期实习面试总结

热门文章

  1. 一个短信验证码功能引发的总结思考
  2. 【Redis核心原理和应用实践】应用 2:缓兵之计 —— 延时队列
  3. 【分析数据集各类GT数量分布】
  4. wpa_supplicant源码理解
  5. 计算机一级windows2000,2012年一级BWindows2000操作系统[2]
  6. StratifiedShuffleSplit实现分层抽样交叉验证
  7. 微积分入门书籍(一)
  8. Vercel搭建属于自己的ChatGPT平台
  9. Python:线程同步,Barrier屏障
  10. Looking for the Devil in the Details:Learning Trilinear Attention Sampling Network for FGVC-笔记