Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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_Arrays_Recursion - Fatal编程技术网

Javascript 根据对象的子对象的“选中”状态递归遍历对象数组

Javascript 根据对象的子对象的“选中”状态递归遍历对象数组,javascript,arrays,recursion,Javascript,Arrays,Recursion,我试图递归地取消选中所有父对象,这些父对象的子对象被选中:false 目前,我的职能是为被检查的孩子的直接父母工作:false,即BSC计算机科学被检查:flase意味着计算机科学也被检查:false 当项目被检查为false时,如何再次循环原始树 预期产量 [ { name: "College", checked: false, children: [

我试图递归地取消选中所有父对象,这些父对象的子对象被选中:false 目前,我的职能是为被检查的孩子的直接父母工作:false,即BSC计算机科学被检查:flase意味着计算机科学也被检查:false

当项目被检查为false时,如何再次循环原始树

预期产量


    [
        {
            name: "College",
            checked: false,
            children: [
                { 
                    name: "College of engineering",
                    checked: false,
                    children: [
                        {
                            name: "Computer Science",
                            checked: false,
                            children: [
                                {
                                    name: "BSC Computer Science",
                                    checked: false,
                                }
                            ]
                        }
                    ]
                },
                { 
                    name: "Humanties",
                    checked: true,
                    children: [
                        {
                            name: "Humans",
                            checked: true,
                            children: [
                                {
                                    name: "HMS",
                                    checked: true,
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]

多谢各位

常数数据=[ { 名称:学院, 核对:对, 儿童:[ { 名称:工程学院, 核对:对, 儿童:[ { 名称:计算机科学, 核对:对, 儿童:[ { 名称:计算机科学理学士, 勾选:假, } ] } ] }, { 姓名:Humanties,, 核对:对, 儿童:[ { 名字:人类, 核对:对, 儿童:[ { 姓名:HMS,, 核对:对, } ] } ] } ] } ] //如果选中了最底部的子段,也请选中父项 函数递归检查所有已检查阵列的所有节点的属性{ 用于数组的常量项{ //项是父项 如果项目1.children{ //项目的所有子项都已选中 如果item.children.every{checked}=>!!选中{ item.checked=true; 递归检查所有检查项的所有节点的属性; }否则{ console.log `${item.name}包含未选中的子项; item.checked=false; //~>现在我们需要检查项的父项是否为false。 } } } 返回数组; } const uncheckedparents whererelated=递归检查所有已检查数据的所有节点的parents;
console.loguncheckedparents(如果相关) 您需要递归地检查子代和子代

常数数据=[ { 名称:学院, 核对:对, 儿童:[ { 名称:工程学院, 核对:对, 儿童:[ { 名称:计算机科学, 核对:对, 儿童:[ { 名称:计算机科学理学士, 勾选:假, } ] } ] }, { 姓名:Humanties,, 核对:对, 儿童:[ { 名字:人类, 核对:对, 儿童:[ { 姓名:HMS,, 核对:对, } ] } ] } ] } ] //如果选中了最底部的子段,也请选中父项 函数检查对象{ ifobj.儿童{ const uncheck=obj.children.reduceacc,curr=>acc | | checkcurr,false; ifuncheck obj.checked=false; } 返回!对象已检查; } 数据预检查;
控制台日志数据 您需要递归地检查子代和子代

常数数据=[ { 名称:学院, 核对:对, 儿童:[ { 名称:工程学院, 核对:对, 儿童:[ { 名称:计算机科学, 核对:对, 儿童:[ { 名称:计算机科学理学士, 勾选:假, } ] } ] }, { 姓名:Humanties,, 核对:对, 儿童:[ { 名字:人类, 核对:对, 儿童:[ { 姓名:HMS,, 核对:对, } ] } ] } ] } ] //如果 选中最底部的子段,同时也选中父项 函数检查对象{ ifobj.儿童{ const uncheck=obj.children.reduceacc,curr=>acc | | checkcurr,false; ifuncheck obj.checked=false; } 返回!对象已检查; } 数据预检查;
控制台日志数据 简单的递归方法可能如下所示:

const allChecked={checked,children=[]}=> 选中子项(&C)。每个子项都已选中 const uncheckUp=data=>data.map{checked,children,…rest}=>{ 休息 checked:allChecked{checked,children}, …儿童?{儿童:取消勾选儿童:{} } const data=[{name:College,checked:true,children:[{name:College of engineering,checked:true,children:[{name:BSC Computer Science,checked:false}]}]},{name:Humanties,checked:true,children:[{name:Humans,checked:true,children:[{name:HMS,checked:true}]}]}] console.Loguncheckup数据
.作为控制台包装{min height:100%!important;top:0}一个简单的递归方法可能如下所示:

const allChecked={checked,children=[]}=> 选中子项(&C)。每个子项都已选中 const uncheckUp=data=>data.map{checked,children,…rest}=>{ 休息 checked:allChecked{checked,children}, …儿童?{儿童:取消勾选儿童:{} } const data=[{name:College,checked:true,children:[{name:College of engineering,checked:true,children:[{name:BSC Computer Science,checked:false}]}]},{name:Humanties,checked:true,children:[{name:Humans,checked:true,children:[{name:HMS,checked:true}]}]}] console.Loguncheckup数据
.as控制台包装{最小高度:100%!重要;顶部:0}一直取消选中返回根数据?-在任何地方都可以取消选中,从而使根不被选中(逻辑上和编程上)。这样的想法会使事情变得复杂-所有、一些、没有-子项都被选中…一直取消选中返回到根数据一个人在任何地方都被取消检查,使得根被取消检查——逻辑上和程序上都是如此。一个使事情复杂化的想法——所有的、一些的、没有的——孩子都被检查了。。。