- 35
- 0
let list = [
{
id: '1',
title: '人员管理',
checked: true,
children: [{
id: '5',
title: '厂家管理',
checked: true,
children: [{
id: '6',
title: '添加厂家',
checked: true,
},
{
id: '7',
title: '操作',
checked: true,
}]
},
{
id: '8',
title: '会员管理',
checked: true,
children: [{
id: '9',
title: '交易明细',
checked: true,
},
{
id: '10',
title: '启用/禁用',
checked: false,
}]
}]
},
{
id: '2',
title: '交易查询',
checked: true,
children: [{
id: '11',
title: '操作',
checked: false,
}, {
id: '12',
title: '操作2',
checked: true,
}]
},
{
id: '3',
title: '测试测试',
checked: true
}
];
这是一份获取到的数据,对象下有子级,需要根据id找出对应的那个对象。
开始动手写,如下:
function findIDobj(Arr,ID) {
let result = null;
for (let i = 0; i < Arr.length; i++) {//遍历第1级
if (Arr[i].id == ID) {
result = Arr[i]; //符合条件就赋值
}
if (Arr[i].children) { //如果有子级继续,遍历下一级
for (let j = 0; j < Arr[i].children.length; j++) { //遍历第2级
if (Arr[i].children[j].id == ID) {
result = Arr[i].children[j];
}
if (Arr[i].children[j].children) { //如果有子级继续,遍历下一级
for (let k = 0; k < Arr[i].children[j].children.length; k++) {//遍历第3级
if (Arr[i].children[j].children[k].id == ID) {
result = Arr[i].children[j].children[k];
}
}
}
}
}
}
return result
}
console.log(findIDobj(list,9))
好像能够根据id找到对象,但是这1大托代码看着就low啊。
再改改,如下:
let result = null;
function findId(Arr, ID) {
for (let i = 0; i < Arr.length; i++) {
if (Arr[i].id == ID) {
result = Arr[i]
}
if (Arr[i].children) {
findId(Arr[i].children, ID)
}
}
return result
}
console.log(findId(list, 9))
递归一下,最后成这个样子,能够实现效果,但是我想把result封到函数里面,但是定义在里面最后return出来的值就为null了,原因也知道就是循环的时候又执行findId函数把result = null了。现在就像问一下如何才能把结果对象放到函数里面,不用在函数外面定义result
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
