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);
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);