为了账号安全,请及时绑定邮箱和手机立即绑定

有没有人遇到过这个问题哈!js 树第归向上找父级修改数据 怎么只能改到一层呢!

有没有人遇到过这个问题哈!js 树第归向上找父级修改数据 怎么只能改到一层呢!

aluckdog 2019-10-16 16:56:07
leta=[{key:1,title:'一级',parentKey:0,status:{choose:false},children:[{key:10,title:'一级-0',parentKey:1,status:{choose:false},children:[{key:15,title:'一级-0-1',parentKey:10,status:{choose:false}}]},{key:11,title:'一级-1',parentKey:1,status:{choose:false}},{key:12,title:'一级-2',parentKey:1,status:{choose:false}},{key:13,title:'一级-3',parentKey:1,status:{choose:false}},{key:14,title:'一级-4',parentKey:1,status:{choose:false}}]}];letparent=(data,obj)=>{data.forEach(item=>{if(item.key===obj.parentKey){//改为trueitem.status.choose=true;parent(data,item);}if(item.children&&item.children.length){parent(item.children,obj);}});};letobj={key:15,title:'一级-0-1',parentKey:10,status:{choose:false}};parent(a,obj);console.log(a);可是执行结果下来就只有key10修改到了循环上去理应key1的choose为true啊目前只有key修改到了!看了好半会。没理解到为啥不执行上去!
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

问题在parent(data,item)这句。每次递归,data是什么呢?你只往下找了,没把父级传进去呀。
这种已经告诉你parentKey的,直接把层级打平,直接找不就好了。
如果不使用parentKey也可以从上往下,用一个变量记录路径就好了。如果使用递归,那么递归要有返回值判断是否找到,也是可以的。或者转成字符串用正则也可以。
                            
查看完整回答
反对 回复 2019-10-16
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

当确定有子集有查找项时,父级key修改为true
leta=[
{
key:1,
title:'一级',
parentKey:0,
status:{choose:false},
children:[
{
key:10,title:'一级-0',parentKey:1,status:{choose:false},children:[
{key:15,title:'一级-0-1',parentKey:10,status:{choose:false}}
]
},
{key:11,title:'一级-1',parentKey:1,status:{choose:false}},
{key:12,title:'一级-2',parentKey:1,status:{choose:false}},
{key:13,title:'一级-3',parentKey:1,status:{choose:false}},
{key:14,title:'一级-4',parentKey:1,status:{choose:false}}
]
}
];
letparent=(data,obj)=>{
data.forEach(item=>{
if(item.key===obj.parentKey){
//改为true
data.key.choose=true//当确定有子集有查找项时,父级key修改为true
item.status.choose=true;
parent(data,item);
}
if(item.children&&item.children.length){
item.status.choose=true;//当确定有子集
parent(item.children,obj);
}
});
};
letobj={key:15,title:'一级-0-1',parentKey:10,status:{choose:false}};
parent(a,obj);
console.log(a);
                            
查看完整回答
反对 回复 2019-10-16
  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信