Javascript 方法递归地从下到上更新值
我试图创建一个递归方法,当您单击层次结构时,所有父级都将被启用 我知道如何使递归方法自上而下,例如,查找一个孩子的id,但我不知道如何使递归方法自上而下 例如:Javascript 方法递归地从下到上更新值,javascript,Javascript,我试图创建一个递归方法,当您单击层次结构时,所有父级都将被启用 我知道如何使递归方法自上而下,例如,查找一个孩子的id,但我不知道如何使递归方法自上而下 例如: const数据=[{ “id”:1, “parentId”:空, “选定”:false, “儿童”:[{ “id”:2, “家长ID”:1, “选定”:false, “儿童”:[{ “id”:3, “家长ID”:2, “选定”:false, “儿童”:[{ “id”:4, “家长ID”:3, “选定”:false, “儿童”:[] }]
const数据=[{
“id”:1,
“parentId”:空,
“选定”:false,
“儿童”:[{
“id”:2,
“家长ID”:1,
“选定”:false,
“儿童”:[{
“id”:3,
“家长ID”:2,
“选定”:false,
“儿童”:[{
“id”:4,
“家长ID”:3,
“选定”:false,
“儿童”:[]
}]
}]
}]
}, {
“id”:1,
“parentId”:空,
“选定”:正确,
“儿童”:[]
}, {
“id”:1,
“parentId”:空,
“选定”:正确,
“儿童”:[]
}]
当选择id为
4的项时,其所有祖先的selected
属性应设置为true
您只需迭代,直到当前节点的parentId
变为null
const data=[{id:1,parentId:null,selected:false,children:[{id:2,parentId:1,selected:false,children:[{id:3,parentId:null,selected:false,children:[]},{id:5,parentId:null,selected:true,children:[]},{id:6,parentId:null,selected:true,children:[]}];
const getById=id=>{
const get=arr=>{
用于(arr的常数x){
如果(x.id==id)返回x;
const res=get(x.children | |[]);
如果(res)返回res;
}
}
返回get(数据);
}
让node=getById(4);
while(node.parentId!=null){
node=getById(node.parentId);
node.selected=true;
}
控制台日志(数据)
您的数据无效:子对象
应该是一个对象数组,我想?您的语法错误。我认为您输入了一个错误:parentId 4不应该是3吗?对不起,children是一个对象数组,它的truechildren[]请。。。修复子项:[]
Fixed@RokoC。Buljan@Javier很乐意帮忙。