递归遍历树

其实就是业务驱动成长,因为昨天给的一个接口是涉及多级架构的,也就是一级结构下面可以有多个二级架构,二级下面还可以有多个三级,因为不能确定下面到底有多少级,而又需要把所有组织遍历出来放在表格中展示。

类似这种:

{
    "retCode":  "0",
    "orgList":  [{
            "orgCode":  "000-0000-00000002026500",
            "orgName":  "安检1111",
            "parentCode":   "0",
            "termNum":  0
        }, {
            "orgCode":  "000-0000-00000002029358",
            "orgName":  "清洁",
            "parentCode":   "0",
            "termNum":  0,
            "orgList":  [{
                    "orgCode":  "000-0000-00000002026962",
                    "orgName":  "第一清洁",
                    "parentCode":   "000-0000-00000002029358",
                    "termNum":  0,
                    "orgList":  [{
                            "orgCode":  "000-0000-00000002000491",
                            "orgName":  "第一清洁(第一队)",
                            "parentCode":   "000-0000-00000002026962",
                            "termNum":  0
                        }]
                }, {
                    "orgCode":  "000-0000-00000002009961",
                    "orgName":  "第二清洁",
                    "parentCode":   "000-0000-00000002029358",
                    "termNum":  0
                }]
        }]
}

一开始没考虑什么多级,用了for遍历,后来一想,不对呀,不能确定有多少个的,不能这样遍历。然后问了一下老大,老大说用递归。大佬勿喷,我确实没用过。然后就自己查了一下,原来就是自调
比如这样:

console.log(res);
var orgListOne = res.orgList;
var orgList = [];
var getOrgList = function(arr){
    for(var i in arr){
        orgList.push(arr[i]);
        var orgChildList = arr[i].orgList;
        if(orgChildList){
            getOrgList(orgChildList);
        }
    }
}
getOrgList(orgListOne);

这是我的实际操作,这里再给一个简单的例子:

给定一个随机数组,数组可能包含数组(也就是说数组元素可能为数组)。
要求用js实现一个函数,返回该数组中所有元素。
例如:数组[2,3,[4,6,[1,8]],12,10],返回结果为:[2,3,4,6,1,8,12,10]

解决方案:

var arrs = []; 
function getArray(arr)
{
    for(let i=0;i<arr.length;i++)
    {
        console.log(arrs);
        if(typeof arr[i] == "number")
        {
            arrs.push(arr[i])
        }
        else{ 
            getArray(arr[i]);
        }
    } 
}
输出arrs为正确答案

这样一看是不是感觉很清楚了呢!!

猜你喜欢

转载自blog.csdn.net/jx950915/article/details/79877151