将后台返回数据去重并渲染到树状图上

vue项目树状图的实现 1.实现背景 项目需要直观的展示元素之间的关系,需要实现一个树状图 数据可视化可以用Echarts HighCharts,但是相关树状图的示例不够直观,且不美观 几种工具之间比较,选择了蚂蚁金服的G6来实现(在开发期间有树状图的示例,之后再看发现这个例子没有了) 2.相关技术介绍 G6图可视化引擎(蚂蚁数据可视化 G6) G6是一个图可视化引擎。它提供了图的绘制、布局、分析、交互、动画等图可视化的基础能力。旨在让关系变得透明,简单。让用户获得关系数据的 Insight。 3.项目集成 3.. 阅读详情

今天做项目时遇到了个树状图渲染的问题,这边要求最终实现效果如下,显示所有企业所有的汽车车牌号:


后台返回的数据格式将每个企业对应的车辆分别为一条一条数据,我当时的想法是让后台返回一个企业为一个对象,该对象又包含着一个车辆数组对象,鉴于后台同事说接口没法实现这样的数据格式,因此实现字段处理需要前端来实现。

后台返回的数据:var items=[{"Cid":11,"Cname":'企业1',"Pno":'粤Axxxx1',"Vid":'p11'},

{"Cid":11,"Cname":'企业1',"Pno":'粤Axxxx2',"Vid":'p12'},

{"Cid":12,"Cname":'企业2',"Pno":'粤Bxxxx1',"Vid":"p21"},

{"Cid":12,"Cname":'企业2',"Pno":'粤Bxxxx2',"Vid":'p22'}....];

而树图渲染需要的数据格式为:

var zNodes = [

{ id: 1, pId: 0, name: '广东省企业汇总', open: true },
{ id: 11, pId: 1, name: '东莞市xxx企业', open: true },
{ id: 111, pId: 11, name: '粤xxxx1', icon: "../../resources/images/timg.png" },
{ id: 112, pId: 11, name: '粤xxxx2', icon: "../../resources/images/timg.png" },
{ id: 12, pId: 1, name: '广州市xxx企业', open: true },
{ id: 121, pId: 12, name: '粤xxxx1', icon: "../../resources/images/timg.png" },
{ id: 122, pId: 12, name: '粤xxxx2', icon: "../../resources/images/timg.png" },
{ id: 13, pId: 1, name: '深圳市xxx企业', open: true },
{ id: 131, pId: 13, name: '粤xxxx1', icon: "../../resources/images/timg.png" },
{ id: 132, pId: 13, name: '粤xxxx2', icon: "../../resources/images/timg.png" },

];

我的想法是先得到如下数据的一个数组,再转变为树图所需格式:

dataRender = [

{"父节点ID1":[{"Cid",'企业id'},{"Cname":'企业名称'},Vitems:[{"Vid":'汽车1id',"Pno":"汽车1车牌号"},{"Vid":'汽车2id',"Pno":"汽车2车牌号"}]},

{"父节点ID2":[{"Cid",'企业id'},{"Cname":'企业名称'},Vitems:[{"Vid":'汽车1id',"Pno":"汽车1车牌号"},{"Vid":'汽车2id',"Pno":"汽车2车牌号"}]}.....];

第一步,把items数组对象转为dataRender对象,这一步涉及到数组去重,考虑到通过key值可以直接判断是否已经存在该ID的企业,因此以ID号作为数组的key值,并且以该key值属性为一个对象;

实现代码如下:

    $.each(items,function(i,item){
        if(!dataRender[item.Cid]){
            dataRender[item.Cid]={"Cid":item.Cid,"Cname":item.Cname,Vitems:[{"Pno":item.Pno,"Vid":item.Vid}]};
        }else{
            dataRender[item.Cid].Vitems.push({"Pno":item.Pno,"Vid":item.Vid});
        }
    });

第二步,得到dataRender后,将dataRender转为树图数据格式,即zNodes数组对象,实现代码如下:

    var zNodes = [{ id: 'p1', pId: 0, name: '广东省企业汇总', open: true }];
    $.each(dataRender,function(Cid,item){
        // console.log(i,item.Vitems);
        zNodes.push({id:Cid,pId:'p1',name:item.Cname,open: true});
        $.each(item.Vitems,function(i,item){
            zNodes.push({id:item.Vid, pId:Cid, name:item.Pno});
        });
    });

控制台输出zNodes数据如下:


第三步,将数据渲染到树图div中,

html:

    <div class="zTreeDemoBackground left">
        <ul id="treeDemo" class="ztree"></ul>
    </div>

javascript:

var setting = {
        check:{
            enable:true
        },
        data:{
            simpleData:{
                enable:true
            }
        }
    };
    $(document).ready(function () {
        $.fn.zTree.init($("#treeDemo"), setting, zNodes);
    });

即可达到预设效果,该过程中,js使用了三次each循环遍历,但是总觉得应该还有其他更方便的js代码可以实现这个过程的转换,请洒潘江,各倾陆海云尔,希望能够有更好更快的js得以实现这个过程~~

Dendrogam图表:融合树状图与桑基图的三维数据叙事可视化 Dendrogam是一种面向业务决策的复合型可视化技术,本质是树状图(Dendrogram)与桑基图(Sankey Diagram)的原理融合,通过层级结构表达关系、连接线粗细编码流量强度、色彩映射状态指标(如转化率、异常率),形成结构-流向-状态三维正交编码。其底层依赖带权重的有向邻接矩阵与业务驱动的层次化建模,规避了传统图表在层级模糊、流量失真或状态不可见等方面的认知缺陷。适用于用户行为分析、风控链路诊断、运营漏斗归因等需15秒内传递关键瓶颈的高价值场景,尤其在Dashboard嵌入、实时监控与跨域流程 阅读详情

相关推荐

极坐标树状图:原理、D3.js实现与性能优化指南

在数据可视化领域,层次结构数据的呈现是一个基础且关键的需求。传统树状图在直角坐标系下展开,当层级过深或节点过多时,往往面临空间利用率低、可读性差的挑战。其核心原理在于通过节点深度与次序的映射,将线性布局转换为环形结构。这种极坐标映射技术,能高效利用圆形画布空间,尤其适合在仪表盘、移动端等有限面积内展示复杂谱系关系,如组织架构、文件目录或生物进化树。从技术实现层面,关键在于理解直角坐标与极坐标的数学转换关系,并适配树布局算法。以D3.js为例,通过其强大的层次布局与坐标映射能力,可以高效实现极坐标树状图的绘制

weixin_30315723的博客 379

zTree接受后台传过来的JSON数组

最近在项目中用到了zTreev3.4来展示一棵树,大概过程是: 1 页面JS发起一个AJAX请求获得data; 2 然后让zTree利用这个data建一棵树(data是后台直接拼接的一个形是:[{},{}]的字符串); 问题:这个data是不能直接用的,需要转化一下,转化代码:zNodes = eval("(" + data + ")");

lovemelovemycode的专栏 7486

Dendrogam树状图:面向层级关系的多维交互可视化方案

树状图是一种用于表达父子层级结构的基础可视化形式,其核心价值在于将抽象的依赖、流转或归属关系转化为符合人类空间认知的视觉隐喻。随着业务系统复杂度提升,传统树图已难以承载状态、权重、权责等多维信息,催生出增强型树图——Dendrogam Chart。它通过有向分支建模流程方向,结合节点大小、颜色、形状与图标四维编码,同步呈现结构、性能、风险与角色,显著提升用户对瓶颈定位与根因分析的效率。该技术广泛适用于供应链路径追踪、IT故障拓扑、组织架构管理及用户行为漏斗等强层级+多状态场景,是构建高穿透力决策型Dashb

weixin_30675247的博客 484

zTree与java后台结合

最近正在使用zTree插件,专门用来实现树形菜单。 下载zTree插件 http://www.treejs.cn/v3/demo.php#_306 这里我通过ajax发送请求获得表中的数据(这里的数据就是要进行树形菜单的) 前台 $.ajax({ type:"POST", url:"sTree", data:{t:Math.random()},

clumsyCoding的博客 3857

层次聚类实战:距离与连接方式如何决定树状图质量

层次聚类是一种无需预设簇数、天然支持多粒度分组的无监督学习方法,其核心原理在于通过样本间距离度量和簇间连接策略逐步构建聚类树。技术价值体现在强可解释性、对初始参数鲁棒、以及支持从宏观到微观的业务决策穿透。典型应用场景包括客户分群、区域分析、基因功能模块识别等探索性结构发现任务。实际落地成败高度依赖两个关键开关:一是适配数据类型的距离计算(如Gower距离处理混合型变量),二是匹配业务语义的连接方式(如Average Linkage兼顾稳定性与泛化性)。本文聚焦生产级实践,覆盖从距离选型、树状图切割到结果验证

vanadiumlin 408

iOS三级树状图页面实现与优化

本文还有配套的精品资源,点击获取 简介:本项目演示了如何在iOS开发中构建三级树状图页面,这对于展示组织结构、商品分类等层级数据至关重要。虽然大部分功能已完成,但在“取消选择”功能上存在一些挑战。项目中使用了UITableView来高效渲染数据并支持用户交互。关键点包括定义数据模型、实现数据源方法、自定义UITableViewCell以及处理事件和用户反馈。此外,还涉及到了...

weixin_42609225的博客 1072

eval对后台传来的数据处理

function doQuery(){         //上面是一查询就刷新整个页面,导致查询条件没有了,采用ajaxs         $.ajax({    type: "POST",    url: "czsf/xtgl/yhgl/YhglServlet",    data:  {'status':'search','queryusername':$("#queryusern

ryan1214的专栏 783

java jfreechart 生成图形报表 饼图,条形图,曲线图

大家好:附件中是myeclipse工程,直接引入myeclipse就可以运行在浏览器看到效果了。谢谢。

Vue 中如何处理树形结构数据渲染与操作?

在 Vue 中,处理树形结构数据的渲染和操作可以使用递归组件、第三方组件库、搜索和筛选等方式。递归组件可以实现无限级别的嵌套,第三方组件库可以提高开发效率,搜索和筛选可以让用户快速地找到目标节点。在实际开发中,我们需要根据具体的业务需求来选择合适的方式来处理树形结构数据。

徐师兄的博客 3539

jmeter小白下载安装步骤

本文仅仅简单介绍了jmeter工具的下载安装,以及基础的操作步骤。

昔年@曦的博客 3498

STM32F030C8烧录实战:用J-Link Commander实现一键批量烧写(附完整脚本)

本文详细介绍了如何使用J-Link Commander工具链实现STM32F030C8的一键批量烧录,包括环境配置、批处理脚本设计、命令脚本解析以及生产环境实战技巧。通过自动化烧录流程,显著提升效率并降低人为错误,特别适合量产和频繁迭代的开发场景。

weixin_30505225的博客 462

zTree树状图插件的渲染以及数据的传入

在做系统的过程中,有个页面要用到树状图功能,该页面需要通过树状图来向用户展示其中已定义好的各种商品类型,以便于用户对商品的分类以及了解。为此我在网上找了各种各样的树状图插件,有layui的原声js树状图,也有的是网上的大神们自己原创的。找了大概一个多小时,最终确定:使用以JQuery函数插件为基础而运行的zTree树状图插件,如下图: 左侧的框框内就是zTree树状图了,右边的文字则是使用的配置参...

weixin_44542089的博客 1602

可微编程:当深度学习遇见物理定律,重塑科学计算新范式

本文探讨了可微编程如何将深度学习与物理定律相结合,重塑科学计算范式。通过自动微分技术,它将物理方程融入可微计算图,使模型在数据驱动的同时遵守物理约束。文章以神经常微分方程为例,阐述了其在连续系统建模、科学模拟器优化等领域的应用,并分析了当前面临的挑战与最佳实践路径。

weixin_29056145的博客 135

layui动态渲染双层树状图

下面我们讲Layui中的双层树状图是如何动态渲染的,下面以渲染服装类型及明细为例: 首先我们需要引入layui的js插件,准备编写树状图渲染的方法: 我们通常使用div标签作为Layui树状图渲染的操作对象,以下图为例:在需要展现树状图的页面代码位置插入div标签,并给定一个特定id。 首先我们讲双层树状图的动态渲染,先给定有特定id的div标签: 开始编写渲染方法(render()): elem:表示渲染的对象ID值(已经给定特定id的div标签); data:为树状图内的数据源,数据源数据

无 738

【ComfyUI】Wan2.2 Animate 动作迁移重绘视频生成

本文介绍了一个基于ComfyUI的Wan2.2 Animate视频生成工作流,通过动作迁移和视频重绘技术实现高质量视频创作。该系统融合视频帧重建、动作迁移、图像重绘和音频合成等多种AI技术,核心采用Wan2.2 Animate 14B_fp8模型配合专属VAE解码器和LoRA微调模块。工作流程包含输入预处理、模型加载、特征提取、动作采样生成、解码输出和资源清理六个阶段,通过WanVideo系列节点实现从图像/视频输入到最终视频输出的完整处理。系统支持对参考图像进行视觉特征提取和嵌入生成,结合文本/动作嵌入进

Mr数据杨 2452

ArcMap|使用模型构建器将kml文件批量转图层

参考:https://www.jianshu.com/p/6de18f846024 第一步:打开模型构建器,拖入kml转图层工具 第二步:插入文件迭代器 第三步:双击“迭代文件”,选择kml所在文件夹 第四步:将“File.kml”与“KML转图层”连接,点击“输入KML文件” 第五步:双击“KML转图层”,更改输出位置,输出数据名称改为%名称% 第六步:运行模型 得到结果: ...

个人学习笔记 3602

jsontr.ee:轻松将JSON数据可视化成互动树状图

在现代Web开发中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式。然而,当处理复杂或嵌套的JSON数据时,理解和调试这些数据结构可能会变得相当困难。为了解决这一问题,jsontr.ee应运而生。jsontr.ee是一个轻量级的JavaScript库,它能够将JSON数据轻松转换成美观且互动的树状图。这种可视化方式不仅提高了数据可读性,还便于开发

gitblog_00060的博客 796

8、音频运行时系统的架构设计

本文深入探讨了音频运行时系统的分层设计及其优势,包括逻辑层和物理层的功能划分。通过分层设计,开发者可以更轻松地管理和优化音频资源,确保其在不同平台上的高效运行。文章还介绍了平台适配与优化、错误处理与调试以及未来发展方向等内容,为开发者提供了宝贵的参考和指导。

juice的博客 463

简单的树状图自动渲染,两层嵌套

简单的树状图自动渲染,两层嵌套

m0_57727153的博客 258

【VTKExamples::PolyData】第十六期 GradientFilter

本文分享VTK样例GradientFilter,并解析接口vtkGradientFilter & vtkAssignAttribute,希望对各位小伙伴有所帮助!

qq_40041064的博客 322

【大模型工程局】告别单打独斗:手把手带你构建多智能体系统(MetaGPT 启示录)

想象一下,不再是只有一个全知全能的 AI,而是有一群各有所长、能够独立思考和行动的“智能体”(Agent)。它们生活在一个共同的环境中,可以相互交流、协作完成共同目标,也可能为了有限资源而相互竞争。这就是多智能体系统(MAS)的核心图景。MAS 的关键特征:自治性 (Autonomy):每个智能体都能独立感知环境、做出决策并执行动作,无需外部直接控制。交互性 (Interaction):智能体之间可以通过某种通信机制(显式或隐式)交换信息、协调行为。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1187

antd树状图tree点击加载子节点(新增修改删除树状图更新)

antd的tree异步加载 新增修改删除 更新树状图

z1034243392的博客 1082

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

用amCharts插件实现树状图

Javascript部分代码: script type="text/javascript"> var chart; var time = 0; var chartData; $.ajax({ type: 'POST', url: 'statistics', data: {time:time}, // a

ljh243581579的博客 703

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

关于echarts绘制树图形的注意事项(文字倾斜、数据更新、缓存重绘问题等)

最近项目中使用到echarts的树操作,对其中几点注意事项进行下总结。 效果图: 1、基础配置 options的配置如下: { tooltip: { trigger: 'item', triggerOn: 'mousemove' }, series: [ { ...

weixin_30482181的博客 1438

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

树形数据的反选有两种方法以及处理后台返回拼装htmL的异步获取不到现象(但是页面F12可以看到)...

树形数据的反选有两种方法以及处理后台返回拼装htmL的异步获取不到现象(但是页面F12可以看到): 1、在后台构建树的时候,就和被选中的结果集比较设置被选中---》缺点需要在迭代中加入循环匹配、效率低 2、只在后台构建树,在前台用js结合本选中的结果集进行设置勾选---》免除在迭代中循环        scriptOfMenu.append("&lt;li tname=\"name...

yuhui666666的博客 261

无限多级树状图 SpringBoot+Vue实现

【代码】无限多级树状图 SpringBoot+Vue实现。

closerswinter的博客 627
上一篇: echarts柱状图(柱条颜色渐变,多条数据显示指定数据数)
下一篇: 高德地图实现矩形围栏绘制和编辑
小简GoGo
博客等级 码龄10年 50粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值