js 不使用递归,将树转为扁平数组

news/2024/11/16 5:39:27/
	/*** 将树转为扁平数组* @param {*} tree 需要转换的树*/const treeToArr = tree => {let resArr = [] //存储拆解完毕的nodelet nodeArr = [...tree] //存储待拆解的nodewhile (nodeArr.length > 0) {let tempNodeArr = [] //临时存储待拆解的nodenodeArr.forEach(item => {let childArr = item.children || []if (childArr.length > 0) {//存在子节点tempNodeArr.push(...childArr)delete item.childrenresArr.push({ ...item })} else {//无子节点resArr.push({ ...item })}})nodeArr = [...tempNodeArr]}return resArr}

在开发中尽量避免使用递归的原因:

  1. 递归的性能问题:递归函数的每一次调用都需要压入函数栈,当递归深度过大时,会导致栈溢出,影响程序的性能。

  2. 递归的可读性问题:递归函数可能存在多次嵌套调用,导致代码可读性变差,难以理解和调试。

  3. 递归的内存问题:递归函数可能存在大量重复计算,导致内存占用过高,影响整个程序的性能。

  4. 递归的边界条件问题:递归函数必须定义边界条件,否则会出现无限递归的情况,导致程序崩溃。

因此,在开发过程中,为了保证程序的性能、可读性和稳定性,我们应该避免过度使用递归,并尽可能使用迭代等其他方式来实现相同的功能。


http://www.ppmy.cn/news/1028100.html

相关文章

运营商二要素认证API接口:提供手机号实名验证服务,确保用户信息的真实性

随着互联网的快速发展,各行各业都需要用户进行实名认证。其中,涉及到用户个人信息的场景,如电商、游戏、直播、金融等需要用户实名认证的场景,必须要进行实名认证。然而,对于这些场景,用户的个人信息的真实…

docker 镜像的导出与导入 save 与 load

一、镜像导出 docker save 导出 将系统中的镜像保存为压缩包,进行文件传输。使用 docker save --help 查看命令各参数,或者去docker官网查看.以 hello-world镜像为例。 A:将镜像保存为tar包 docker save image > package.tar docker sa…

虹科新闻 | 虹科与Power-MI正式建立合作伙伴关系

近日,虹科与Power-MI正式建立合作伙伴关系,双方就工业预测性维护领域进行深入的交流与合作,未来将共同致力于为亚洲市场提供完整的、更高质量的预测性维护解决方案,解决亚洲客户的工业自动化挑战。 虹科与Power-MI都表示十分期待…

阿里云免费服务器领取入口_限制条件_申请指南

阿里云免费服务器领取,个人和企业用户均可以申请,个人免费服务器1核2GB 每月750小时,企业u1服务器2核8GB免费使用3个月,阿里云百科分享阿里云免费服务器申请入口、个人和企业免费配置、申请资格条件及云服务器免费使用时长&#x…

对doccano自动标注使用的默认UIE模型进行微调以提高特定领域的实体识别能力,提高标注速度

预处理doccano标注的数据 该章节详细说明如何通过doccano.py脚本对doccano平台导出的标注数据进行转换,一键生成训练/验证/测试集。 在本地部署UIE模型 下载模型压缩包: 本来是要通过一定的方法(GitZip)才能在整体的大项目仓库…

【Transformer】自注意力机制Self-Attention | 各种网络归一化Normalization

1. Transformer 由来 & 特点 1.1 从NLP领域内诞生 "Transformer"是一种深度学习模型,首次在"Attention is All You Need"这篇论文中被提出,已经成为自然语言处理(NLP)领域的重要基石。这是因为Transfor…

nvm的介绍和常用命令

一. 介绍 nvm(Node Version Manager)是一个用于管理多个Node.js版本的工具,它允许你在同一台机器上安装和切换不同的Node.js版本。以下是nvm的一些详细介绍: 安装和配置:你可以从nvm的GitHub仓库中下载并安装nvm。安装…

Redis缓存雪崩、击穿、穿透?

我们谈谈Redis在实际项目中用作缓存时经常碰到的,也是经常面试的三大问题:缓存穿透、缓存击穿、缓存雪崩,以及这些问题的常用解决方法。 在介绍这三大问题之前,我们需要先了解Redis作为一个缓存中间件,在项目中是如何…