ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js实现el-tree树形数据转为扁平数据

2021-07-21 10:33:02  阅读:156  来源: 互联网

标签:el res tree rank children js id fn


对于上一篇文章 vue中的递归做出 一些改进

 

 

 

element=========截图

 

解决方法:

利用递归的方法循环树形数据,当遇到有children的对象再次强调有递归函数循环children数组,每次循环的数据放入一个提前生命好的数组里,等所有的递归函数执行完毕,这个数据就是想要的扁平数据数组,如上图。

let res = []        // 用于存储递归结果(扁平数据)
// 递归函数
const fn = (source)=>{
    source.forEach(el=>{
        res.push(el)
        el.child && el.child.length>0 ? fn(el.child) : ""        // 子级递归
    })
}

示例1

let res = []        // 用于存储递归结果(扁平数据)
// 递归函数
const fn = (source)=>{
    source.forEach(el=>{
        res.push(el)
        el.children && el.children.length>0 ? fn(el.children) : ""        // 子级递归
    })
}
 
// 树形数据
const arr = [
    { id: "1", rank: 1 },
    { id: "2", rank: 1,
        children:[ 
            { id: "2.1", rank: 2 },
            { id: "2.2", rank: 2 } 
        ] 
    },
    { id: "3", rank:1,
        children:[ 
            { id: "3.1", rank:2, 
                children: [ 
                    { id:'3.1.1', rank:3,
                        children:[ 
                            { id: "3.1.1.1", rank: 4, 
                                children:[
                                    { id: "3.1.1.1.1", rank: 5 }
                                ] 
                            } 
                        ] 
                    } 
                ] 
            } 
        ] 
    }
]
 
fn(arr)             // 执行递归函数
console.log(res)    // 查看结果

 结果

 

标签:el,res,tree,rank,children,js,id,fn
来源: https://www.cnblogs.com/zzm131400/p/15038372.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有