[{
"id": 150,
"children": [
{
"id": 72,
"children": [
{
"id": 73,
"children": [],
},
{
"id": 77,
"children": [
{
"id": 146,
"children": [
{
"id": 147,
"children": [
{
"id": 148,
"children": [
{
"id": 149,
"children": []
}
]
}
]
}
]
}
]
}
]
}
]
}
]
现在需要删除id为149的元素 需要使用带递归的过滤器或我不知道=( 条件一 - 嵌套可以无限制
答案 0 :(得分:2)
您可以对children
采用递归方法,并检查实际对象id
是否等于所需的id
。然后拼接数组并返回true
以停止进一步迭代(假设所有id
都是唯一的)。
var data = [{ id: 150, children: [{ id: 72, children: [{ id: 73, children: [] }, { id: 77, children: [{ id: 146, children: [{ id: 147, children: [{ id: 148, children: [{ id: 149, children: [] }] }] }] }] }] }] }],
id = 149;
data.some(function iter (o, i, a) {
if (o.id === id) {
a.splice(i, 1);
return true;
}
return o.children && o.children.some(iter);
});
console.log(data);

.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)
管理该结构的数据是不现实的。你可以使用id为149的那个元素,但它会很慢而且很麻烦。
我建议重新构造你的数组,以便没有那么多的嵌套。