js数据库多级分类按树形结构打印

可以使用 JavaScript 来按层级打印 categories 数组。首先,需要将这个数组转换成一个树形结构,然后再进行递归或者迭代来打印每个层级的内容。

以下是一个示例代码,用来实现这个功能:

const categories = [{ id: 2, name: "手机", parent: 1 },{ id: 6, name: "电脑", parent: 1 },{ id: 3, name: "苹果", parent: 2 },{ id: 4, name: "小米", parent: 2 },{ id: 5, name: "华为", parent: 2 },{ id: 7, name: "笔记本", parent: 6 },{ id: 8, name: "台式机", parent: 6 },{ id: 11, name: "衬衫", parent: 10 },{ id: 12, name: "裤子", parent: 10 },{ id: 1, name: "电子产品", parent: 0 },{ id: 9, name: "服装", parent: 0 },{ id: 13, name: "女装", parent: 9 },{ id: 10, name: "男装", parent: 9 },{ id: 14, name: "裙子", parent: 13 },{ id: 15, name: "上衣", parent: 13 },{ id: 16, name: "萝莉", parent: 13 },{ id: 17, name: "御姐", parent: 13 },
];// 将数组转换为树形结构
function buildTree(categories, parent = 0) {let node = {};categories.filter(item => item.parent === parent).forEach(item => {node[item.id] = {id: item.id,name: item.name,children: buildTree(categories, item.id)};});return node;
}// 递归打印树形结构
function printTree(tree, level = 0) {Object.values(tree).forEach(node => {console.log("  ".repeat(level) + node.name);if (node.children) {printTree(node.children, level + 1);}});
}// 构建树
const tree = buildTree(categories);// 打印树形结构
printTree(tree);

这段代码首先定义了 buildTree 函数,它会根据 categories 数组构建一个树形结构。然后定义了 printTree 函数来递归打印这个树形结构,每一层使用两个空格缩进来表示层级关系。

你可以将这段代码复制粘贴到你的 JavaScript 环境中执行,就可以看到按层级打印出的结果了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java如何删除字符串内部分字符

java中,如果要删除字符串内部分字符,需要用delete方法,前提字符串是可变字符串StringBuffer类型的。 delete方法的语法格式是sbf.delete(start,end) 其中,sbf是任意StringBuffer对象,start是起始索引,end…

AQ mode

算法原理概述 AQ即adaptive quantization(自适应量化),属于宏块级别码流分配的范畴,在一帧的宏块之间调整码率分配,x264中AQ算法的核心内容是:复杂宏块使用大的QP,简单宏块使用小的QP。x264如何定义复杂?x264是根据宏块内像素值的方差来评价宏块复杂性,方差越大,宏块…

溶解氧(DO)理论指南(1)

转载自梅特勒官网资料,仅用于学习交流,侵权则删! 溶解氧理论指南 1 溶解氧(DO)原理1.1 溶解氧和分压1.2 氧气在水中的溶解度1.3 溶解氧对生物的重要性1.4 溶解氧对工业的重要性 1 溶解氧(DO)原理 氧是宇宙中第三大常见元素,也是…

JavaScript(6)——数据类型转换

为什么需要类型转换? JavaScript是弱数据类型:JavaScript不知道变量到底属于哪种数据类型,只有赋值了才清除 使用表单,prompt获取的数据默认为字符串类型,此时不能直接进行算数运算 隐式转换 某些运算符被执行时&am…

力扣hot100-链表

文章目录 概要链表的类型 题目:相交链表题解 概要 链表(Linked List)是数据结构中的一种,用于存储具有线性关系的数据。在链表中,每个元素称为一个节点(Node),每个节点包含两个部分…

”极大似然估计“和”贝叶斯估计“思想对比

极大似然估计(Maximum Likelihood Estimation, MLE)和贝叶斯估计(Bayesian Estimation)是统计学中两种重要的参数估计方法,它们在思想和应用上有着显著的差异。下面我将详细对比这两种方法的思想,并分别举出…

两次叛国投敌,没有祸及子孙反而家族长盛不衰的传奇

这个人就是韩国国王韩王信,汉朝八大异姓王之一。 第一次叛国投敌,发生在楚汉争霸时期。有一次他的军队被项羽包围,于是选择了投降。不过,这是权宜之计,不久就借机回到刘邦阵营。 第二次叛国投敌,发生在西…

【Linux开发】基于ALSA库实现音量调节

基于ALSA库实现音量调节 ALSA库实现音量调节1、使用alsamixer工具查看音频接口2、完整代码2.1、snd_mixer_open2.2、snd_mixer_attach、2.3、snd_mixer_selem_register2.4、snd_mixer_load2.5、snd_mixer_first_elem/snd_mixer_elem_next2.6、snd_mixer_selem_get_playback_vol…

linux下php的psr.so扩展源码安装

cd /usr/local/src git clone https://github.com/jbboehr/php-psr.git cd php-psr /usr/local/php/bin/phpize ./configure --with-php-config/usr/local/php/bin/php-config make make install在php.ini中添加extensionpsr.so 重启php-fpm /etc/init.d/php-fpm relo…

打卡第3天---链表相关

除了每天自己写博客总结我个人的学习收获情况之外,我也会看其他录友写的博客文章,对于其他录友的博客内容在代码随想录的训练营都是开诚布公的,都能互相看到。彼此学习,彼此参照,有一位录友思路很清晰呀,用画图软件把自己对题的思路画的特别清晰,我 应该向他们学习;除此…

从零开始使用 Docsify 搭建文档站点

引言 在当今的技术环境中,拥有一份易于访问和美观的文档是至关重要的。Docsify 是一个非常适合快速搭建文档站点的工具,它简单易用,且不需要生成静态文件。本文将带你一步步从零开始使用 Docsify 搭建一个文档站点。 1. 安装 Node.js 和 np…

【ARMv8/v9 GIC 系列 5.1 -- GIC GICD_CTRL Enable 1 of N Wakeup Function】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC Enable 1 of N Wakeup Function基本原理工作机制配置方式应用场景小结GIC Enable 1 of N Wakeup Function 在ARM GICv3(Generic Interrupt Controller第三代)规范中,引入了一个名为"Enable 1 of N Wakeup"的功能。…

上海市计算机学会竞赛平台2023年2月月赛丙组区间的并

题目描述 给定一个数轴上的 𝑛n 个闭区间,第 𝑖i 个闭区间的两端点为[𝑎𝑖,𝑏𝑖][ai​,bi​],它们的并集可以表示为若干不相交的闭区间,请按照左端点从小到大的顺序输出…

(一)Docker基本介绍

部署项目的发展 传统部署适合需要最大性能和可靠性的场景,但在资源利用和管理方面有显著劣势。虚拟化部署提供了良好的资源利用率和隔离性,适用于需要灵活扩展和多租户环境的场景,但存在性能开销。容器部署在轻量级、可移植性和资源利用率方面…

适合金融行业的国产传输软件应该是怎样的?

对于金融行业来说,正常业务开展离不开文件传输场景,一般来说,金融行业常用的文件传输工具有IM通讯、邮件、自建文件传输系统、FTP应用、U盘等,这些传输工具可以基础实现金融机构的文件传输需求,但也存在如下问题&#…

【Java10】成员变量与局部变量

Java中的变量只有两种:成员变量和局部变量。 和C不同,没有全局变量了。 成员变量,field,我习惯称之为**”属性“**(但这些年,因为attribute更适合被叫做属性,所以渐渐不这么叫了)。 …

google 邮件信息收集

主要介绍通过google和fofax对目标进行邮件信息收集 chrome插件 email-whatsapp-extractor link-klipper-extract-all bulk-url-opener-extension email-whatsapp-extractor 使用正则表达式,获取访问页面内所有的email邮箱和whatsapp号码,以表格的形式导…

el-table封装点击列筛选行数据功能,支持筛选,搜索,排序功能

数据少的话&#xff0c;可以前端实现&#xff0c;如果多的话&#xff0c;建议还是请求接口比较合理父组件&#xff1a; <template> <div class"home"> <!-- <img alt"Vue logo" src"../assets/logo.png"> <HelloWorld …

Hilbert编码 思路和scala 代码

需求&#xff1a; 使用Hilbert 曲线对遥感影像瓦片数据进行编码&#xff0c;获取某个区域的编码值即可 Hilbert 曲线编码方式 思路 大致可以对四个方向的数据进行归类 左下左上右上右下 这个也对应着编码的顺序 思考在不同Hilbert深度&#xff08;阶&#xff09;情况下的…

【fastadmin开发实战】经营数据自动识别录入

项目场景描述&#xff1a;每日录入各个门店的员工经营数据&#xff0c;直接从微信复制报数、系统识别录入。 解决方案&#xff1a;各个门店按照固定的汇报模板进行汇报&#xff08;如福田店有员工1、2、3、4、5号员工&#xff0c;每个员工按模板报数&#xff09; 例如&#xf…