欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 将平铺的数组变成树结构 避免多次循环嵌套 避免递归 new Map()使用知多少

将平铺的数组变成树结构 避免多次循环嵌套 避免递归 new Map()使用知多少

2025/2/23 19:38:39 来源:https://blog.csdn.net/bobringtheboys/article/details/140874086  浏览:    关键词:将平铺的数组变成树结构 避免多次循环嵌套 避免递归 new Map()使用知多少

Set 和 Map 数据结构

背景

偶然看到一个需求就是需要将一个平铺的树状结构,通过特定的字段要求改变成树状结构,然后最开始的想法就是循环套循环,就是通过递归来,这次尝试着用了map来实现

前提

一个由多个对象组成的数组结构, 每个都有字段 parentId ,id
当这个对象的parentId为0的时候则为第一级 当这个对象的parentId等于另外一个对象id的时候就表明 这个对象是那个对象的子集,并且存放在subs中, 这个subs是原始对象中没有的key

实现

// 假如有个list
// 首先将这个list转换成map格式const map = new Map();for (let i = 0; i < data.length; i++) {map.set(data[i].id, data[i]);}
// 定义一个数组(最终需要使用到的树结构的数组)const dataList = [];const _this = this;list.forEach(item => {if (item.parentId  === 0) {dataList.push(item);} else {const upperObj = map.get(item.parentId);if (upperObj) {if (!upperObj.subs) {_this.$set(upperObj, 'subs', []);}upperObj.subs.push(item);}}});
// 最终得到的 dataList 就是我们要使用到的树状结构的集合

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词