前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >今天就掰扯掰扯js遍历Tree

今天就掰扯掰扯js遍历Tree

作者头像
何处锦绣不灰堆
发布2021-07-15 09:42:57
7930
发布2021-07-15 09:42:57
举报
文章被收录于专栏:农历七月廿一农历七月廿一
问题描述

遍历tree难点在于怎么找到每一个节点的值,同时判断还有没有更多的节点,也就是说,将所有的节点都找到且拿到节点的值!那么我们的思路就比较明确了,首先我们认为他是没有任何节点了,直接将我们需要的 数据给到一个函数A进行操作,然后操作的时候判断一下是他的childrens是不是存在且同时为我们需要的数组类型,如果是,就调我们之前操作对象的函数A,这样就可以直接将所有的节点都找到!代码实现如下:

代码语言:javascript
复制
//声明一个tree的数据
var arrData = [
         {
        id:1,
        name:"tom",
        childrens:[{
            id:1,
            name:"jim"
            },{
            id:2,
            name:"lisi"
            }]
    }, {
        id:2,
        name:"jerry",
        childrens:[{
            id:1,
            name:"karry"
            },{
            id:2,
            name:"wanger",
                childrens:[
                       {
                    id:1,
                    name:"mali"
                     }]
        },{
        id:3,
        name:"wangwu"
        }]
    }
];

//声明一个函数,做的操作是将数组中的每一项作为一个操作对象进行操作,比如你要根据一些特定条件进行筛选数据等,这里我们将里面的所有的name全部列出来!
let tickFilter = (function(){
    let tempArr = new Array()
    let getFilterReault = function(arg){
            tempArr.push(arg.name)
        if(arg.childrens instanceof Array && null != arg.childrens){
            for(let child of arg.childrens){
                getFilterReault(child)
            }
        
    }
    //到这为止,以上的代码其实可以将数组中的对象给拿出来了,但是获取的是子节点中的数据,因为我们没有原数据的入口,作为一个工具我们需要有一个入口,也就是将原数组作为参数传递进去的这么一个入口!
    return {
        filterFunc:function(arr){
            tempArr = new Array()
                for(let item of arr){
                    getFilterReault(item)
                }
            return tempArr
        }
    }
})()

console.log(tickFilter.filterFunc(arrData))
打印结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A9aOCogP-1626240550462)(http://wlmblogcode.com/upload/2021/07/image-7b38ad19f20e4469bb0ba7c261b4dba0.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A9aOCogP-1626240550462)(http://wlmblogcode.com/upload/2021/07/image-7b38ad19f20e4469bb0ba7c261b4dba0.png)]
总结

其实看完代码你就会发现,这玩意他不难,只是我们很多时候不去理解他而已!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
  • 打印结果
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档