You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let oldArr =[{'1_class':'工具','2_class':'备忘录','1_id':1,'2_id':2},{'1_class':'教育','2_class':'学历教育','3_class':'中等','1_id':3,'2_id':4,'3_id':6},{'1_class':'教育','2_class':'学历教育','3_class':'高等','1_id':3,'2_id':4,'3_id':5},{'1_class':'教育','2_class':'成人教育','1_id':3,'2_id':7}];
博客链接
# 树状数组结构转化
# 题目如下:
这道题是我朋友发给我的,之前一开始看的时候,觉得很简单,但仔细往下看的时候,眉头一皱发现事情并不简单。
PS:这类题目之前也以不同形式出现过
# 传进去的数组:
# 输出的数组:
# 建议大家好好想想,争取能够自己解出来
# 参考一下我的解题方法:
先算出层级嵌套数
遍历数组,再遍历数组的元素,用
parseInt
拿到每一个值,将最大的值取出来,即为层级嵌套数。数组转成属性层级的对象。对象的属性是层级,值是数组,层级里面的值。
1.去重操作(比如:
1_id
相等的话就不再重复添加)2.提取需要的信息,最终的值和相应父级的信息(之后组装数组的时候放到对应的地方,需要的信息)。
最后输出的对象是这个样子
将属性层级的对象转成树状结构数组。
遍历对象,获取层级值。
遍历层级的每个元素。
找到对应的层级将值添加进去,否则递归继续找对应层级。
# 代码:
# 更好的解决方式:只关注层级有没有被组装过
感谢MrHouBeiBei提供更好的解决方法:
# 点个Star支持我一下~
博客链接
The text was updated successfully, but these errors were encountered: