【vue】 将扁平化数组结构数据处理为tree对象数组并对tree对象进行排序

前端工程师能力地图:从JavaScript基础到性能优化的笔试全解析 JavaScript作为现代Web开发的基石,其核心概念如作用域、闭包、原型链和异步编程,构成了前端工程师理解语言运行机制的关键。这些原理不仅决定了代码的执行结果,更深刻影响着应用的性能与可维护性。深入掌握这些基础,能帮助开发者编写出更高效、健壮的代码,从而应对复杂业务场景的挑战。在前端工程实践中,性能优化是衡量工程师能力的重要维度,它涉及网络请求、渲染流程、代码分割等多个层面。本文基于前端面试中的高频考点,系统梳理了从语言基础、浏览器原理到框架应用、算法思维及系统设计的完整能力体系,并结合虚拟DOM、事件 阅读详情
/**
 * 将扁平化数据结构处理为tree结构
 * @param { 扁平化数据结构 } obj 
 */
export function formatTree(obj){
  let copyedObj = JSON.parse(JSON.stringify(obj));  //深拷贝源数据
  return copyedObj.filter(parent =>{
    let findChildren = copyedObj.filter(child => {
      return parent.id === child.parentId;
    })
    findChildren.length > 0 ? parent.children = findChildren : parent.children = []
    return parent.parentId == undefined   
  })
}

 

 此处为根据tree结构对象中的location值的大小进行排序 

/**
 * 树结构list排序
 * @param { tree结构list } list 
 */
export function sortList(list){
    list.sort((obj1, obj2) => {
        obj1.location = obj1.location || 255;
        obj2.location = obj2.location || 255;
        let val1 = Number(obj1.location);
        let val2 = Number(obj2.location);
        if (val1 < val2) {
            return -1;
        } else if (val1 > val2) {
            return 1;
        } else {
            return 0;
        }
    }).forEach(v => {
        if(v.children){
            sortList(v.children);
        }
    });
}

 

前端100道八股文+50道场景题 闭包是指一个函数能够访问它外部函数作用域中的变量,即使外部函数已经执行完毕。形成闭包需要三个条件:函数嵌套、内部函数引用外部变量、外部函数返回内部函数。闭包的主要作用有三个:第一,实现数据私有化。比如可以用闭包创建私有变量,外部无法直接访问,只能通过特定方法操作。第二,模块化。可以用闭包封装代码,只暴露需要的接口。第三,函数柯里化和防抖节流等高级技巧都会用到闭包。闭包的缺点是可能造成内存泄漏。因为闭包引用的外部变量不会被垃圾回收,如果大量使用闭包且不及时清理,会占用过多内存。 阅读详情

相关推荐

中科闻歌前端面试题及参考答案

call、apply、bind 无法修改箭头函数内部 this,就算传入参数,绑定 this 的参数会直接被忽略。

大模型大数据攻城狮的专栏 175

Vue中实现 将数组转换为树形结构的两种方法

第一种:递归实现数组转为树形结构 第一步: // 递归: 封装一个函数:将列表list数据转换成数据树形数据=>递归 // 遍历树形 有一个重点 要先找一个头 function transListDataToTreeData(list, root) { const arr = [] // 1.遍历 list.forEach((item) => { // 2.首次传入空字符串 判断list的pid是否为空 如果为空就是一级节点 if (item.pid ==...

FellAsleep的博客 1万+

【信息科学与工程学】计算机科学与自动化——第一百三十五篇 开发框架篇 101开发框架对比

EJB 事务是“容器替你管到底”的重量级契约,Spring 事务是“你定义规则、容器帮你执行”的轻量级抽象。对比点数学表达含义EJB 事务成本重但标准Spring 本地事务成本轻量Spring JTA 事务成本介于两者之间代理开销Spring AOP 每次调用额外成本NESTED 保存点仅部分回滚时支付XA 2PC分布式强一致代价自调用失效(无代理)Spring AOP 陷阱事务同步回调Spring 特有扩展点对比维度MyBatisVue 3React 18FastAPI。

weixin_49199313的博客 211

vue js数组对象转树形结构

【代码】vue js数组对象转树形结构。

weixin_53587375的博客 670

【信息科学与工程学】计算机科学与自动化 第二百零一十一 软件开发模型01

编号类型模型领域模型中的知识点/因素/参数关联知识和法律法规1传统顺序模型瀑布模型 (Waterfall)通用软件开发、硬件紧密耦合系统、政府/军工项目、需求稳定的传统信息系统严格线性阶段:可行性研究→需求分析(SRS,含功能/非功能/接口/约束,使用IEEE 830模板)→系统设计(概要设计HLD:架构、模块划分、数据库ER图;详细设计LLD:伪代码、类图、接口定义)→实现(编码规范、代码审查、静态分析工具SonarQube)→测试(单元测试JUnit、集成测试、系统测试、验收测试UAT,测试计划提前编写

weixin_49199313的博客 162

Vue数组转成树结构

假设我们有一个包含父子关系的扁平数组,数组中的每个元素都包含一个唯一标识符和一个指向父节点的引用。我们的目标是将这个扁平数组转换成一个树形结构,以便在界面上进行展示和操作。在Vue开发中,我们经常需要将扁平的数组转换成树形结构,以便在前端页面中展示数据。本文将介绍如何使用Vue进行数组转树操作,并提供相应的源代码示例。该方法使用递归算法遍历扁平数组,并根据父节点ID将子节点添加到相应的父节点中。为了将扁平数组转换成树形结构,我们可以使用递归算法进行处理。的Vue组件,用于渲染树形结构。

PixelNovaO的博客 479

数组树形结构与扁平化结构相互转换

【代码】数组树形结构与扁平化结构相互转换。

weixin_46011719的博客 369

PointPainting 复现

三维目标检测

weixin_58207716的博客 4536

Js-树形结构数据(tree)扁平化处理

树形结构格式转换成一维数组对象格式。

锦瑟年华L的博客 820

Unity 数字孪生笔记1 工具介绍

前言 工欲善其事必先利其器 流程思考 数字孪生本质上一种基于实际物理数据的可视化方案,通过对接实际数据,在三维界面中展示孪生结果。 那么这个流程就很简单了。 整个流程分为三块:数据来源-》数据分析-》数据展示 输入数据 首先我们需要考虑我们能拿到什么。第一,实际物体的三维数据从哪里来,第二,实际数据怎么获取到。 模型数据 工业上常常会用到CAD模型,CAD模型具有精确、统一的特点,但是CAD不是三角面片,我们不能直接导出到Unity中,而且导入之后有很多不合理的地方,例如面片杂乱、面数过高等问题。针对这个

Thissky的专栏 1万+

[漏洞剖析]JeecgBoot queryFieldBySql注入与JDBC连接滥用:从内存马植入到RCE的完整攻击链

本文深度剖析了JeecgBoot框架中queryFieldBySql接口的SQL注入漏洞及其引发的完整攻击链。攻击者利用该漏洞,通过Freemarker SSTI植入隐蔽的内存马,并进一步滥用JDBC连接测试功能,借助H2数据库特性实现远程命令执行(RCE),揭示了低代码平台中功能滥用与安全配置疏忽带来的严重风险。

weixin_29232121的博客 115

将平铺的数组转树

一般来说,平铺的数组转树用到的地方还是比较多的,所以有必要记录一下,因为我这个项目中,需要多次用到,所以就封装一个组件,方便多次调用,有两种方式实现数组转树1.非递归方式2.递归方式 后面补上...

weixin_69743436的博客 304

芒果YOLO11改进106:检测头篇DynamicHead动态检测头:基于DynamicHead,二次原创提出SATNeXt模块,提出全新的动态DynamicSatDetect

检测头篇DynamicHead动态检测头:基于DynamicHead,二次原创提出SATNeXt模块,提出全新的动态DynamicSatDetect

包括YOLOv5、YOLOv7、YOLOv8等模型改进 773

Vision-Agents Decart 插件:实时视频风格化实战与断线自愈拆透

Vision-Agents 的 Decart 插件把摄像头画面逐帧重绘成任意风格,一次安装加一个密钥,就能让通话里的画面跟随对话实时切换风格、叠加参考图换装。它最合适的场景是低延迟视频通话中的实时风格化:直播虚拟试装、互动滤镜、风格化连麦。本文给出三样可落地的内容:`RestylingProcessor` 的安装方式与全部构造参数,用 Function Calling 把换风格挂进 LLM 的两层

gitblog_01385的博客 423

浅谈银行内部户治理

为避免该问题的发生,对内部户入账类交易,或内部户是可透支的账户(如系统间往来),可考虑通过异步方式更新账户余额(当然,根本上还是要考虑银行业务量的实际,异步消息接口很多时候没有同步接口方便),另外,在进行内部户余额更新时,可以通过定时的借贷方发生额轧差的方式,将多次的锁请求,简化为一次(当然,发生额明细本身在加工账户交易历史时,是不能汇总的)。内部户在银行系统中,属于业务属性较少,实现相对简单,原理也很容易讲清的系统,但管中窥豹,越是基础的东西,越能看出一家银行业务、内控的专业程度。

银行信息系统应用架构详解 793

Nvidia Jetson平台 JP4.2.1版本GStreamer视频采集异常问题调试记录

Nvidia Jetson平台GStreamer in JP4.2.1不能采集但是 v4l2-ctl和 ffmpeg能正常采集视频。

jzwjzw19900922的博客 2127

函数模块化重构多级菜单:从意大利面条代码到清晰架构的实践

在软件开发中,处理树形数据结构是常见的需求,例如后台管理系统的导航菜单、权限配置树或商品分类。其核心原理是将具有层级关系的节点组织成嵌套结构,通常涉及递归遍历、父子关系映射和状态管理。函数模块化是一种重要的软件设计思想,它通过将复杂逻辑拆分为职责单一、可复用的纯函数单元,显著提升代码的可维护性、可测试性和可扩展性。这种技术价值在于能够将原本高度耦合的“面条式代码”重构为清晰的数据处理流水线,从而优雅地应对业务逻辑的动态变化。本文以多级菜单这一典型应用场景为例,详细阐述了如何通过数据标准化、树形构建、权限过滤

weixin_34242819的博客 756

YOLOv13涨点改进 | 全网独家创新、高效涨点改进篇 | CVPR 2024 | YOLOv13引入SHSA单头自注意力模块,减少冗余的多头注意力,轻量化改进,助力目标检测和图像分类任务高效涨点

本文提出了一种改进YOLOv13模型的新方法——SHSA(单头自注意力)模块,用于提升目标检测任务的计算效率和推理速度。SHSA通过简化多头注意力机制为单头结构,显著减少了计算冗余和内存占用。实验表明,该模块在保持精度的同时,在GPU、CPU和移动设备上分别实现了3.3倍、8.1倍和2.4倍的加速效果。文章详细介绍了SHSA的结构原理、核心代码实现方法,以及如何集成到YOLOv13的配置文件中。这种改进特别适合资源受限设备,为实时目标检测提供了更优的速度-精度平衡方案。

Ai缝合怪、助力小伙伴高效发论文 510

Lodash.js核心函数实战指南:提升JavaScript工程效率

JavaScript作为动态弱类型语言,在对象嵌套访问、数组去重、函数节流等基础操作上长期存在原生API碎片化、边界处理不健壮等问题。Lodash.js通过高度封装的工具函数,以声明式语法实现安全取值、深拷贝、防抖节流等高频需求,其模块化设计支持Tree Shaking,TypeScript类型定义完善,且经15000+测试用例验证边界场景。在中后台系统、电商页面、表单管理等需要高稳定性和快速迭代的工程场景中,Lodash已成为事实标准的js工具库。本文聚焦_.get、_.debounce、_.cloneD

weixin_30555515的博客 390

高通 vs MTK vs 海思:三大平台 ISP 架构横向对比与实战差异分析

随着移动影像能力成为智能终端差异化竞争的核心维度,ISP(Image Signal Processor)架构日益重要。高通、MTK、海思三大 SoC 厂商在 ISP 设计上各具特色,不仅在图像处理链路、模块集成度、算法加速路径等方面存在显著差异,同时也决定了终端厂商在成像质量、调试复杂度与扩展能力上的实际表现。本文将基于真实平台项目经验,横向对比三大主流平台的 ISP 架构关键指标,系统分析其在实际开发过程中的能力边界、工程成本与调优空间,帮助工程师更精准地进行平台选型与优化策略制定。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3937

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2025百度前端面试核心考点全解析与备考策略

前端面试不仅考察知识点的记忆,更看重从现象到原理的还原能力、方案权衡能力和代码落地能力。以JavaScript事件循环为例,微观任务与宏任务的执行顺序、闭包与作用域链的底层机制,都是高频考点;React与Vue的设计哲学差异、微前端与工程化性能优化,则进一步检验候选人的技术视野。掌握这些基础原理,能帮助开发者在面对白屏排查、首屏加载优化等真实场景时快速定位瓶颈,并构建可维护的前端架构。从网络层、渲染层到框架层,系统化梳理核心知识体系,正是备战大厂面试的关键路径。围绕百度前端岗位的高频题型,拆解常见追问方式与

weixin_33860528的博客 353

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Cocos基础概念知识

【架构透视与数据流向图解】Cocos Creator 3.x 引入了高度可定制的现代渲染管线(Render Pipeline),支持跨平台的高性能图形渲染。其工作原理可以抽象为一个从“逻辑数据”到“屏幕像素”的数据流转换过程。【工作原理数据流图】场景图 (Scene Graph)➔渲染收集 (RenderFlow)➔渲染队列 (RenderQueue)➔渲染管线 (RenderPipeline)➔图形 API (WebGL/Vulkan)1. 场景漫游与数据收集(RenderFlow)

qq_52269550的博客 563

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

vue扁平数据转树形结构递归组件渲染

这里使用的是用map映射id和自身然后遍历通过parentid找父级的方法 源扁平数据: { "code": 200, "message": "操作成功", "data": [ { "functionId": 10000, "parentFunctionId": 0, "functionName": "安全检测" }, { "funct

Suk__的博客 706

vue平铺数组转换成树型数组

【代码】vue平铺数组转换成树型数组。

qq_44684550的博客 282

vue/javascript 根据parentId 返回树结构数组

前言 效果在最后面 我认为前端序列化成树结构比较好,没必要后端做了再返回,所以才有以下的故事。 很多时候我们前端展示的树结构,后端只是返回来一个带有parentId的数组对象给我们,而前端则需要根据parentId去序列化成树结构… 每次序列化一次都要从新写一个… 所以我就特此记录一下。 正文 先看方法 /** * 构造树型结构数据 * @param {*} data 数据源 * @param {*} id id字段 默认 'id' * @param {*} parentId 父节点字段 默认

Ambitiouss的博客 1920

vue js数据扁平结构转树状结构

//方法一 let treeMapList = res.data.reduce((memo,current)=>{ memo[current[“id”]] = current; return memo; },{}); console.log(treeMapList); this.tree_list = res.data.reduce((arr,current)=>{ let parent_id = current.parent_id; let parent = treeMapList[paren

qq_45031191的博客 400
上一篇: 【ant design vue】 a-cascader级联下拉框获取及回显(非动态加载级联数据)
下一篇: 【vue && ant design vue】 双击行复制该行数据id值
谭CV
博客等级 码龄9年 73粉丝 85原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值