普通对象数组转树形结构

发布时间:2024年01月23日

?

上面是一个简单的对象数组转成树形结构数组的一个实现方式: 下面我来解析一下这段代码?

首先 步骤1:把数组传进toTree这个方法创建一个存储结果的res数组和空的map对象,然后forEach遍历data, map[item.id] = item? 这刚代码的意思是把item中的id作为键,然后把item作为值存到map对象中 这里我给你们打印看一下map对象

??? ???? ?步骤2:再次循环data代码中 let parent?= map[item.pid]? 这段代码的意思通过 item的pid去寻找他的父节点看他的父节点是否存在这里我也截图说一下吧.下图第一个箭头 他的pid是1,那么我们看数组里面是找不到id为1的项的,那么就说明他不并在父节点,并且我们就认为他是树形结构的第一层直接走的else这个判断里面 直接把他添加到res中。那我们在看向第二个和第三个箭头,他们的pid分别是2和4,并且id为2和id为4的项都存在,我们就把当前的item也就是当前遍历的这一项放到id和他pid相等的项的children下面。这行代码的意思就是如果?parent.children?存在且为真值(非空数组),则直接使用?parent.children;否则,如果?parent.children?为假值或空数组,则使用一个新的空数组?[]到此就转换成了树形的结构??? ??? ? ?

??

文章来源:https://blog.csdn.net/m0_55564216/article/details/135751476
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。