Javascript Lodash:如何使用id从数组中删除项或嵌套项?

Javascript Lodash:如何使用id从数组中删除项或嵌套项?,javascript,arrays,multidimensional-array,lodash,Javascript,Arrays,Multidimensional Array,Lodash,我有一个如下所示的数组: [ { "id": "denuzi", "sub": [ {"id": "s4p58o"}, {"id": "xzbqi"}, ], }, { "id": "4rcodm", "sub": [], } ] 我试图做的是使用提供的id从数组或嵌套数组中删除项 e、 g.如果提供了denuzi,则移

我有一个如下所示的数组:

[
    {
        "id": "denuzi",
        "sub":
        [
            {"id": "s4p58o"},
            {"id": "xzbqi"},
        ],
    },
    {
        "id": "4rcodm",
        "sub": [],
    }
]
我试图做的是使用提供的id从数组或嵌套数组中删除项

e、 g.如果提供了
denuzi
,则移除整个第一个对象;如果提供了
s4p58o
,则仅移除第一个对象子数组中的对象

我知道我可以使用以下代码删除整个对象:

_.remove(this.items, function(item) {
    return item.id !== id;
});
但我不知道如何进行检查以删除子项?

只需使用

var列表=[
{
“id”:“denuzi”,
“sub”:
[
{“id”:“s4p58o”},
{“id”:“xzbqi”},
],
},
{
“id”:“4rcodm”,
“分”:[…],
}
]
const result=list.filter(a=>a.id!=='denuzi');
控制台日志(结果)不使用lodash

let数据=[
{
“id”:“denuzi”,
“sub”:
[
{“id”:“s4p58o”},
{“id”:“xzbqi”},
],
},
{
“id”:“4rcodm”,
“分”:[…],
}
]
函数删除(数据,删除ID){
返回数据
.filter(({id})=>id!==removeId)//如果父对象的id与removeId匹配,则将其删除
.map({id,sub})=>({id,sub:sub.filter({id}=>id!==removeId)})//用缺少子对象的新子数组替换子数组
}
日志(删除(数据,“s4p58o”);

log(remove(data,“denuzi”)
您可以通过检查
id
或再次调用
sub
来采用迭代和递归的方法。如果找到,请退出

函数删除(数组,id){
返回数组。some((o,i,a)=>o.id==id
?a.拼接(i,1)
:移除(o.sub | |[],id)
);
}
var数组=[{id:“denuzi”,sub:[{id:“s4p58o”},{id:“xzbqi”}]},{id:“4rcodm”,sub:[]};
移除(阵列“s4p58o”);
console.log(数组);
移除(数组“denuzi”);
console.log(数组)

作为控制台包装{max height:100%!important;top:0;}
它不适用于嵌套结构,例如,您的解决方案无法删除您的
s4p58o