js,对特殊数组遍历后 删除指定数组

[ {
"id" : "1",
"name" : "一",
"age" : 40,
"children" : [ {
"id" : "1-1",
"name" : "test1",
"age" : 20,
"children" : [ {
"id" : "1-1-1",
"name" : "test1-1",
"age" : 10
}, {
"id" : "1-1-2",
"name" : "test1-2",
"age" : 10
} ]
}, {
"id" : "1-2",
"name" : "test2",
"age" : 20,
"children" : [ {
"id" : "1-2-1",
"name" : "test2-1",
"age" : 10
}, {
"id" : "1-2-2",
"name" : "test2-1",
"age" : 10
} ]
} ]
}, {
"id" : "2",
"name" : "二",
"age" : 10,
"children" : [ {
"id" : "2-1",
"name" : "test1",
"age" : 10,
"children" : [ {
"id" : "2-1-1",
"name" : "test1-1",
"age" : 10
} ]
} ]
} ]
// 删除以上数组中,节点id为1-1-2和1-2-1的节点结果如下

[ {
"id" : "1",
"name" : "一",
"age" : 40,
"children" : [ {
"id" : "1-1",
"name" : "test1",
"age" : 20,
"children" : [ {
"id" : "1-1-1",
"name" : "test1-1",
"age" : 10
}]
}, {
"id" : "1-2",
"name" : "test2",
"age" : 20,
"children" : [ {
"id" : "1-2-2",
"name" : "test2-1",
"age" : 10
} ]
} ]
}, {
"id" : "2",
"name" : "二",
"age" : 10,
"children" : [ {
"id" : "2-1",
"name" : "test1",
"age" : 10,
"children" : [ {
"id" : "2-1-1",
"name" : "test1-1",
"age" : 10
} ]
} ]
} ]

GetObject = function(Origin,Key,Value,Children)
{
var T,F;
Children = Children || 'children'
for (F = Origin.length;F--;)
if (Value === (T = Origin[F])[Key]) return {
Obj : T,
Index : F,
Parent : Origin,
Remove : function(){T === Origin[F] && Origin.splice(F,1)}
}
else if (Children in T)
{
T = arguments.callee(T[Children],Key,Value,Children)
if (T) return T
}
}

var Test = [ {
"id" : "1",
"name" : "一",
"age" : 40,
"children" : [ {
"id" : "1-1",
"name" : "test1",
"age" : 20,
"children" : [ {
"id" : "1-1-1",
"name" : "test1-1",
"age" : 10
}, {
"id" : "1-1-2",
"name" : "test1-2",
"age" : 10
} ]
}, {
"id" : "1-2",
"name" : "test2",
"age" : 20,
"children" : [ {
"id" : "1-2-1",
"name" : "test2-1",
"age" : 10
}, {
"id" : "1-2-2",
"name" : "test2-1",
"age" : 10
} ]
} ]
}, {
"id" : "2",
"name" : "二",
"age" : 10,
"children" : [ {
"id" : "2-1",
"name" : "test1",
"age" : 10,
"children" : [ {
"id" : "2-1-1",
"name" : "test1-1",
"age" : 10
} ]
} ]
} ];
GetObject(Test,'id','1-1-2').Remove()
GetObject(Test,'id','1-2-1').Remove()
console.log(Test)

追问

谢谢哈,test里面可能没有1-2-1,此时会报错,加判断应该在哪加,还有如果是这种简单的[{"id":"1-1-1","name":"test1-1","age":10},{"id":"1-1-2","name":"test1-2","age":10}],删除id为1-1-2的得到[{"id":"1-1-1","name":"test1-1","age":10}]该怎么删

追答

抱歉没有及时看到...

温馨提示:答案为网友推荐,仅供参考
相似回答