其实就是业务驱动成长,因为昨天给的一个接口是涉及多级架构的,也就是一级结构下面可以有多个二级架构,二级下面还可以有多个三级,因为不能确定下面到底有多少级,而又需要把所有组织遍历出来放在表格中展示。
类似这种:
{
"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为正确答案
这样一看是不是感觉很清楚了呢!!