js如何遍历不规则多维数组,去除type=0的部分,并返回新的数组,求指导


var list = [{
            "id": "0",
            "name": "Session",
            "type": 1,
            "children": [{
                "id": "47",
                "name": "文件夹1",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "44",
                    "name": "192.168.3.144",
                    "parentId": 47,
                    "resourceId": 44,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "48",
                "name": "文件夹2",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "50",
                    "name": "192.168.3.143",
                    "parentId": 48,
                    "resourceId": 45,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "49",
                "name": "文件夹3",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "51",
                    "name": "192.168.3.145",
                    "parentId": 49,
                    "resourceId": 46,
                    "description": "",
                    "type": "1",
                    "children": []
                }, {
                    "id": "52",
                    "name": "ceshi",
                    "parentId": 49,
                    "resourceId": 47,
                    "description": "",
                    "type": "1",
                    "children": []
                }, {
                    "id": "53",
                    "name": "文件夹3-1",
                    "parentId": 49,
                    "resourceId": 0,
                    "description": "",
                    "type": "0",
                    "children": [{
                        "id": "55",
                        "name": "ceshi3-1",
                        "parentId": 53,
                        "resourceId": 48,
                        "description": "",
                        "type": "1",
                        "children": []
                    }]
                }, {
                    "id": "54",
                    "name": "文件夹3-2",
                    "parentId": 49,
                    "resourceId": 0,
                    "description": "",
                    "type": "0",
                    "children": []
                }]
            }]
        }, {
            "id": "47",
            "name": "文件夹1",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "44",
                "name": "192.168.3.144",
                "parentId": 47,
                "resourceId": 44,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "44",
            "name": "192.168.3.144",
            "parentId": 47,
            "resourceId": 44,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "48",
            "name": "文件夹2",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "50",
                "name": "192.168.3.143",
                "parentId": 48,
                "resourceId": 45,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "50",
            "name": "192.168.3.143",
            "parentId": 48,
            "resourceId": 45,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "49",
            "name": "文件夹3",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "51",
                "name": "192.168.3.145",
                "parentId": 49,
                "resourceId": 46,
                "description": "",
                "type": "1",
                "children": []
            }, {
                "id": "52",
                "name": "ceshi",
                "parentId": 49,
                "resourceId": 47,
                "description": "",
                "type": "1",
                "children": []
            }, {
                "id": "53",
                "name": "文件夹3-1",
                "parentId": 49,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "55",
                    "name": "ceshi3-1",
                    "parentId": 53,
                    "resourceId": 48,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "54",
                "name": "文件夹3-2",
                "parentId": 49,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": []
            }]
        }, {
            "id": "51",
            "name": "192.168.3.145",
            "parentId": 49,
            "resourceId": 46,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "52",
            "name": "ceshi",
            "parentId": 49,
            "resourceId": 47,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "53",
            "name": "文件夹3-1",
            "parentId": 49,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "55",
                "name": "ceshi3-1",
                "parentId": 53,
                "resourceId": 48,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "55",
            "name": "ceshi3-1",
            "parentId": 53,
            "resourceId": 48,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "54",
            "name": "文件夹3-2",
            "parentId": 49,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": []
        }]

    console.log(list);

    //剔除无子节点并且type==0的 只取type==1或者有子节点的
    getList(list);

    //删除type==0的,包括其下的子节点,只保留type==1的
    // removeList(list);

    console.log(list);


    function getList(list) {
        for (let i = 0; i < list.length; i++) {
            let item = list[i];
            if (item.children && item.children.length > 0) {
                getList(item.children);
            }
            if (item.type === "0" && (!item.children || item.children.length === 0)) {
                list.splice(i, 1);
                i--;
            }
        }
    }

    function removeList(list) {
        for (let i = 0; i < list.length; i++) {
            let item = list[i];
            if (item.children && item.children.length > 0) {
                removeList(item.children);
            }
            if (item.type === "0") {
                list.splice(i, 1);
                i--;
            }
        }
    }

提供了两种场景的解决方案,如果能帮到你,望【采纳】

思想:因为要考虑子列表,深复制,再递归遍历判断再删除
要是对你有帮助的,请点下采纳,谢谢

  
var list = [{
            "id": "0",
            "name": "Session",
            "type": 1,
            "children": [{
                "id": "47",
                "name": "文件夹1",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "44",
                    "name": "192.168.3.144",
                    "parentId": 47,
                    "resourceId": 44,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "48",
                "name": "文件夹2",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "50",
                    "name": "192.168.3.143",
                    "parentId": 48,
                    "resourceId": 45,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "49",
                "name": "文件夹3",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "51",
                    "name": "192.168.3.145",
                    "parentId": 49,
                    "resourceId": 46,
                    "description": "",
                    "type": "1",
                    "children": []
                }, {
                    "id": "52",
                    "name": "ceshi",
                    "parentId": 49,
                    "resourceId": 47,
                    "description": "",
                    "type": "1",
                    "children": []
                }, {
                    "id": "53",
                    "name": "文件夹3-1",
                    "parentId": 49,
                    "resourceId": 0,
                    "description": "",
                    "type": "0",
                    "children": [{
                        "id": "55",
                        "name": "ceshi3-1",
                        "parentId": 53,
                        "resourceId": 48,
                        "description": "",
                        "type": "1",
                        "children": []
                    }]
                }, {
                    "id": "54",
                    "name": "文件夹3-2",
                    "parentId": 49,
                    "resourceId": 0,
                    "description": "",
                    "type": "0",
                    "children": []
                }]
            }]
        }, {
            "id": "47",
            "name": "文件夹1",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "44",
                "name": "192.168.3.144",
                "parentId": 47,
                "resourceId": 44,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "44",
            "name": "192.168.3.144",
            "parentId": 47,
            "resourceId": 44,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "48",
            "name": "文件夹2",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "50",
                "name": "192.168.3.143",
                "parentId": 48,
                "resourceId": 45,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "50",
            "name": "192.168.3.143",
            "parentId": 48,
            "resourceId": 45,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "49",
            "name": "文件夹3",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "51",
                "name": "192.168.3.145",
                "parentId": 49,
                "resourceId": 46,
                "description": "",
                "type": "1",
                "children": []
            }, {
                "id": "52",
                "name": "ceshi",
                "parentId": 49,
                "resourceId": 47,
                "description": "",
                "type": "1",
                "children": []
            }, {
                "id": "53",
                "name": "文件夹3-1",
                "parentId": 49,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "55",
                    "name": "ceshi3-1",
                    "parentId": 53,
                    "resourceId": 48,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "54",
                "name": "文件夹3-2",
                "parentId": 49,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": []
            }]
        }, {
            "id": "51",
            "name": "192.168.3.145",
            "parentId": 49,
            "resourceId": 46,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "52",
            "name": "ceshi",
            "parentId": 49,
            "resourceId": 47,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "53",
            "name": "文件夹3-1",
            "parentId": 49,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "55",
                "name": "ceshi3-1",
                "parentId": 53,
                "resourceId": 48,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "55",
            "name": "ceshi3-1",
            "parentId": 53,
            "resourceId": 48,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "54",
            "name": "文件夹3-2",
            "parentId": 49,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": []
        }];
        
var newList = list.concat(); // 深拷贝

function modify(lst){
    for(let i=0;i<lst.length;i++){
        if(lst[i].type=="0"){//剔除
            lst.splice(i,1);//从数组中删除项目,数组后面的继续前移
            i=i-1;//防止漏掉元素
        }else if(lst[i].children.length>0)
            modify(lst[i].children);
    }
}

modify(newList);
console.log(list);
console.log(newList);

img

var list = [{
            "id": "0",
            "name": "Session",
            "type": 1,
            "children": [{
                "id": "47",
                "name": "文件夹1",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "44",
                    "name": "192.168.3.144",
                    "parentId": 47,
                    "resourceId": 44,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "48",
                "name": "文件夹2",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "50",
                    "name": "192.168.3.143",
                    "parentId": 48,
                    "resourceId": 45,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "49",
                "name": "文件夹3",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "51",
                    "name": "192.168.3.145",
                    "parentId": 49,
                    "resourceId": 46,
                    "description": "",
                    "type": "1",
                    "children": []
                }, {
                    "id": "52",
                    "name": "ceshi",
                    "parentId": 49,
                    "resourceId": 47,
                    "description": "",
                    "type": "1",
                    "children": []
                }, {
                    "id": "53",
                    "name": "文件夹3-1",
                    "parentId": 49,
                    "resourceId": 0,
                    "description": "",
                    "type": "0",
                    "children": [{
                        "id": "55",
                        "name": "ceshi3-1",
                        "parentId": 53,
                        "resourceId": 48,
                        "description": "",
                        "type": "1",
                        "children": []
                    }]
                }, {
                    "id": "54",
                    "name": "文件夹3-2",
                    "parentId": 49,
                    "resourceId": 0,
                    "description": "",
                    "type": "0",
                    "children": []
                }]
            }]
        }, {
            "id": "47",
            "name": "文件夹1",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "44",
                "name": "192.168.3.144",
                "parentId": 47,
                "resourceId": 44,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "44",
            "name": "192.168.3.144",
            "parentId": 47,
            "resourceId": 44,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "48",
            "name": "文件夹2",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "50",
                "name": "192.168.3.143",
                "parentId": 48,
                "resourceId": 45,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "50",
            "name": "192.168.3.143",
            "parentId": 48,
            "resourceId": 45,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "49",
            "name": "文件夹3",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "51",
                "name": "192.168.3.145",
                "parentId": 49,
                "resourceId": 46,
                "description": "",
                "type": "1",
                "children": []
            }, {
                "id": "52",
                "name": "ceshi",
                "parentId": 49,
                "resourceId": 47,
                "description": "",
                "type": "1",
                "children": []
            }, {
                "id": "53",
                "name": "文件夹3-1",
                "parentId": 49,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "55",
                    "name": "ceshi3-1",
                    "parentId": 53,
                    "resourceId": 48,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "54",
                "name": "文件夹3-2",
                "parentId": 49,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": []
            }]
        }, {
            "id": "51",
            "name": "192.168.3.145",
            "parentId": 49,
            "resourceId": 46,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "52",
            "name": "ceshi",
            "parentId": 49,
            "resourceId": 47,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "53",
            "name": "文件夹3-1",
            "parentId": 49,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "55",
                "name": "ceshi3-1",
                "parentId": 53,
                "resourceId": 48,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "55",
            "name": "ceshi3-1",
            "parentId": 53,
            "resourceId": 48,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "54",
            "name": "文件夹3-2",
            "parentId": 49,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": []
        }];
console.log(list);
    for(i = 0,len=list.length; i < len; i++) {
            var tmp = list[i];
            console.log(i,tmp);
         if(tmp !=undefined &&tmp.type=="0"){
            list.splice(i,1);//删除type=0的部分
        }
    }
console.log(list);


如有帮助的,请点下采纳本答案

这个考虑了child不为空的情况,也考虑了type=0出现在child节点的情况(这时只删除child),因此仅删除了满足1、没有child和2、type=0的节点。


var list = [{
            "id": "0",
            "name": "Session",
            "type": 1,
            "children": [{
                "id": "47",
                "name": "文件夹1",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "44",
                    "name": "192.168.3.144",
                    "parentId": 47,
                    "resourceId": 44,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "48",
                "name": "文件夹2",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "50",
                    "name": "192.168.3.143",
                    "parentId": 48,
                    "resourceId": 45,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "49",
                "name": "文件夹3",
                "parentId": 0,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "51",
                    "name": "192.168.3.145",
                    "parentId": 49,
                    "resourceId": 46,
                    "description": "",
                    "type": "1",
                    "children": []
                }, {
                    "id": "52",
                    "name": "ceshi",
                    "parentId": 49,
                    "resourceId": 47,
                    "description": "",
                    "type": "1",
                    "children": []
                }, {
                    "id": "53",
                    "name": "文件夹3-1",
                    "parentId": 49,
                    "resourceId": 0,
                    "description": "",
                    "type": "0",
                    "children": [{
                        "id": "55",
                        "name": "ceshi3-1",
                        "parentId": 53,
                        "resourceId": 48,
                        "description": "",
                        "type": "1",
                        "children": []
                    }]
                }, {
                    "id": "54",
                    "name": "文件夹3-2",
                    "parentId": 49,
                    "resourceId": 0,
                    "description": "",
                    "type": "0",
                    "children": []
                }]
            }]
        }, {
            "id": "47",
            "name": "文件夹1",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "44",
                "name": "192.168.3.144",
                "parentId": 47,
                "resourceId": 44,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "44",
            "name": "192.168.3.144",
            "parentId": 47,
            "resourceId": 44,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "48",
            "name": "文件夹2",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "50",
                "name": "192.168.3.143",
                "parentId": 48,
                "resourceId": 45,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "50",
            "name": "192.168.3.143",
            "parentId": 48,
            "resourceId": 45,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "49",
            "name": "文件夹3",
            "parentId": 0,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "51",
                "name": "192.168.3.145",
                "parentId": 49,
                "resourceId": 46,
                "description": "",
                "type": "1",
                "children": []
            }, {
                "id": "52",
                "name": "ceshi",
                "parentId": 49,
                "resourceId": 47,
                "description": "",
                "type": "1",
                "children": []
            }, {
                "id": "53",
                "name": "文件夹3-1",
                "parentId": 49,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": [{
                    "id": "55",
                    "name": "ceshi3-1",
                    "parentId": 53,
                    "resourceId": 48,
                    "description": "",
                    "type": "1",
                    "children": []
                }]
            }, {
                "id": "54",
                "name": "文件夹3-2",
                "parentId": 49,
                "resourceId": 0,
                "description": "",
                "type": "0",
                "children": []
            }]
        }, {
            "id": "51",
            "name": "192.168.3.145",
            "parentId": 49,
            "resourceId": 46,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "52",
            "name": "ceshi",
            "parentId": 49,
            "resourceId": 47,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "53",
            "name": "文件夹3-1",
            "parentId": 49,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": [{
                "id": "55",
                "name": "ceshi3-1",
                "parentId": 53,
                "resourceId": 48,
                "description": "",
                "type": "1",
                "children": []
            }]
        }, {
            "id": "55",
            "name": "ceshi3-1",
            "parentId": 53,
            "resourceId": 48,
            "description": "",
            "type": "1",
            "children": []
        }, {
            "id": "54",
            "name": "文件夹3-2",
            "parentId": 49,
            "resourceId": 0,
            "description": "",
            "type": "0",
            "children": []
        }]


function filt(lst)
{
  for(var i=lst.length-1;i>=0;i--)
  {
    if(lst[i].children) {
      for (var j = 0; j < lst[i].children.length; j++) {
        filt(lst[i].children[j]);//递归调用
      }
      if(lst[i].type == 0 && (!lst[i].children || lst[i].children.length == 0))
        lst.splice(i ,1);
    }
  }

}
console.log(list);

filt(list);
console.log(list);