Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 方法递归地从下到上更新值_Javascript - Fatal编程技术网

Javascript 方法递归地从下到上更新值

Javascript 方法递归地从下到上更新值,javascript,Javascript,我试图创建一个递归方法,当您单击层次结构时,所有父级都将被启用 我知道如何使递归方法自上而下,例如,查找一个孩子的id,但我不知道如何使递归方法自上而下 例如: const数据=[{ “id”:1, “parentId”:空, “选定”:false, “儿童”:[{ “id”:2, “家长ID”:1, “选定”:false, “儿童”:[{ “id”:3, “家长ID”:2, “选定”:false, “儿童”:[{ “id”:4, “家长ID”:3, “选定”:false, “儿童”:[] }]

我试图创建一个递归方法,当您单击层次结构时,所有父级都将被启用

我知道如何使递归方法自上而下,例如,查找一个孩子的id,但我不知道如何使递归方法自上而下

例如:

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很乐意帮忙。